【发布时间】:2013-09-25 06:54:21
【问题描述】:
我正在使用 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 平台上工作。
之后,由于中止线程问题,我的应用程序以错误的方式运行,并且应用程序进入挂起状态。
有没有人知道这个问题或有人遇到过这类问题?
有没有三种方法可以关闭正在运行的线程?
请尽快告诉我答案。
【问题讨论】:
-
mono 2.10 已经老了,请用 mono 3.2.x 测试
-
@knocte :: 我正在使用 ubuntu 12.04,我在“go-mono.com/mono-downloads/download.html”网站上看到 mono 3.2.X 适用于 MAC OS、Windows 和 Open Suse,不适用于其他。你知道他们支持 3.2.X 吗?
-
@knocte,你能告诉我除了 Open Suse 之外的其他 Linux 平台支持 mono 3.2.X 吗?
-
如果你的发行版没有提供mono 3.2.x的包,你可以自己编译mono
标签: .net linux multithreading mono window