qewrty123456
Member
- Joined
- Apr 13, 2016
- Messages
- 34
我是模仿quest plugin 写的;
下面是ab错误提示:
System.Threading.ThreadAbortException: 正在中止线程。
在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 autofffff.Host.RunForm()
源代码下
host.cs模块:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Xml;
using System.Reflection;
using System.Runtime.InteropServices;
using ArcheBuddy.Bot.Classes;
using autofffff.forms;
namespace autofffff
{
public class Host :Core
{
internal Main mainForm { get; set; }
private Thread formThread;
private void RunForm()
{
try
{
Application.Run(mainForm);
}
catch (Exception error)
{
Log(error.ToString());
}
}
public void PluginStop()
{
try
{
if (mainForm != null)
{
mainForm.Invoke(new Action(() => mainForm.Close()));
mainForm.Invoke(new Action(() => mainForm.Dispose()));
}
Application.Exit();
}
catch (Exception error)
{
Console.WriteLine(error.ToString());
}
try
{
//if (formThread.ThreadState == System.Threading.ThreadState.)
//{
formThread.Abort();
//formThread.Join();
//}
}
catch (Exception error)
{
Console.WriteLine("Error on stopping questing Thread!");
}
}
public void PluginRun()
{
try
{
mainForm = new Main();
mainForm.SetHost(this);
formThread = new Thread(RunForm);
formThread.IsBackground = true;
formThread.SetApartmentState(ApartmentState.STA);
formThread.Start();
}
catch (Exception error)
{
Log(error.ToString());
}
}
}
}
下面是winform代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace autofffff.forms
{
public partial class Main : Form
{
private Host host;
public Main()
{
InitializeComponent();
}
public void SetHost(Host host)
{
this.host = host;
}
private void Main_Load(object sender, EventArgs e)
{
}
}
}
下面是ab错误提示:
System.Threading.ThreadAbortException: 正在中止线程。
在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 autofffff.Host.RunForm()
源代码下
host.cs模块:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Xml;
using System.Reflection;
using System.Runtime.InteropServices;
using ArcheBuddy.Bot.Classes;
using autofffff.forms;
namespace autofffff
{
public class Host :Core
{
internal Main mainForm { get; set; }
private Thread formThread;
private void RunForm()
{
try
{
Application.Run(mainForm);
}
catch (Exception error)
{
Log(error.ToString());
}
}
public void PluginStop()
{
try
{
if (mainForm != null)
{
mainForm.Invoke(new Action(() => mainForm.Close()));
mainForm.Invoke(new Action(() => mainForm.Dispose()));
}
Application.Exit();
}
catch (Exception error)
{
Console.WriteLine(error.ToString());
}
try
{
//if (formThread.ThreadState == System.Threading.ThreadState.)
//{
formThread.Abort();
//formThread.Join();
//}
}
catch (Exception error)
{
Console.WriteLine("Error on stopping questing Thread!");
}
}
public void PluginRun()
{
try
{
mainForm = new Main();
mainForm.SetHost(this);
formThread = new Thread(RunForm);
formThread.IsBackground = true;
formThread.SetApartmentState(ApartmentState.STA);
formThread.Start();
}
catch (Exception error)
{
Log(error.ToString());
}
}
}
}
下面是winform代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace autofffff.forms
{
public partial class Main : Form
{
private Host host;
public Main()
{
InitializeComponent();
}
public void SetHost(Host host)
{
this.host = host;
}
private void Main_Load(object sender, EventArgs e)
{
}
}
}