我正在使用 mono 2.10.8.1 框架来开发一个小型 GUI 独立应用程序。
我创建了一个桌面 GUI 应用程序,其中我创建了一个线程,可用于在后台执行某些操作,然后在完成操作后中止调用线程。
另一件事是 Abort() 函数在 Windows 中运行良好,没有任何问题,但在 Linux 中无法运行。
Thread t1 = new Thread(Linux_Thread);
t1.IsBackground = true;
t1.Start();
//Do some operation in some other function.
Console.WriteLine("Linux thread :: " + t1.ThreadState);
t1.Abort();
Console.WriteLine("Linux thread After Abort :: " + t1.ThreadState);
因此,Linux 中上述程序的输出如下:
Linux thread :: Background
Linux thread After Abort :: Background, AbortRequested
而在 windows 中,上述程序的输出如下::
Linux thread :: Background
Linux thread After Abort :: Stopped
因此,似乎 Abort() 函数在单声道框架中不起作用,因为它在 Windows 平台中起作用。
之后,由于中止线程问题,我的应用程序以错误的方式运行,并且应用程序进入挂起状态。
有没有人知道这个问题或任何人遇到过这类问题?
三种关闭正在运行的线程的替代方法是什么?
请尽快让我知道答案。