【发布时间】:2010-03-03 19:51:16
【问题描述】:
还有其他帖子说你可以在windows窗体中创建一个控件,然后检查InvokeRequired属性看看当前线程是否是主线程。
问题是您无法知道该控件本身是否是在主线程上创建的。
我正在使用下面的代码来判断一个线程是否是主线程(启动进程的线程):
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA ||
Thread.CurrentThread.ManagedThreadId != 1 ||
Thread.CurrentThread.IsBackground || Thread.CurrentThread.IsThreadPoolThread)
{
// not the main thread
}
有人知道更好的方法吗?在未来的运行时版本中,这种方式似乎很容易出错或中断。
【问题讨论】:
标签: c# .net multithreading