我在 C# 4.0 中创建了一个线程,想知道如何检查它是否正在运行?
问问题
2159 次
2 回答
6
您可以使用Thread.IsAlive
来检查 aThread
是否正在运行。
话虽如此,如果您使用的是 C# 4,手动创建“线程”并不是一个好主意。您应该考虑使用 TPL 和Task
/Task<T>
类,因为这提供了一个更简洁的模型,可以在任务完成后附加要运行的工作、从操作中提取数据等。
于 2013-10-23T17:03:33.103 回答
0
我使用 Mutex 来验证这一点。有时只需使用 Thread 验证 Thread 是否处于活动状态。如果您在后台运行,IsAlive 是不安全的。
尝试这个:
private void btnDoSomething()
{
try
{
string nameThread = "testThreadDoSomething";
var newThread = new Thread(delegate() { this.DoSomething(nameThread); });
newThread.IsBackground = true;
newThread.Name = nameThread;
newThread.Start();
//Prevent optimization from setting the field before calling Start
Thread.MemoryBarrier();
}
catch (Exception ex)
{
}
}
public void DoSomething(string threadName)
{
bool ownsMutex;
using (Mutex mutex = new Mutex(true, threadName, out ownsMutex))
{
if (ownsMutex)
{
Thread.Sleep(300000); // 300 seconds
if (Monitor.TryEnter(this, 300))
{
try
{
// Your Source
}
catch (Exception e)
{
string mensagem = "Error : " + e.ToString();
}
finally
{
Monitor.Exit(this);
}
}
//mutex.ReleaseMutex();
}
}
}
于 2013-10-23T17:13:36.930 回答