我在C#4.0中創建了一個線程,並想知道如何檢查它是否正在運行?如何檢查一個線程是否在C#中運行?
回答
您可以使用Thread.IsAlive
來檢查Thread
是否正在運行。這就是說,如果您使用C#4,那麼手動創建「線程」並不是一個好主意。你應該考慮使用TPL和類,因爲這提供了一個非常乾淨的模型,用於在任務完成後附加工作以運行,將數據從操作中拉出等。
現在任務優先於.NET 4中的BackgroundWorker?我剛剛瞭解到Task,但似乎沒有訂閱像BackgroundWorker的事件。 –
@StealthRabbi一般來說,你可以做同樣的事情,你會用BW來完成任務。持續性和調度程序使您可以完成大部分相同的概念。在C#5中,async/await使用Task,真正使BW完全廢棄,IMO。有關用戶界面工作任務的信息,請參閱http://reedcopsey.com/2010/04/19/parallelism-in-net-part-17-think-continuations-not-callbacks/。 –
我使用Mutex來驗證這一點。有時只需驗證線程是否處於活動狀態,如果您在Background上運行,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();
}
}
}
- 1. 如何檢查一個網站是否在C#中在線?
- 2. 如何檢查進程是否仍在c內核中運行?
- 3. 如何檢查線程是否正在運行?
- 4. 如何檢查我的線程是否正在運行Java
- 5. 如何檢查線程是否正在運行
- 6. C++:如何檢查一個確定的過程是否正在運行
- 7. C程序 - 如何檢查Web服務是否正在運行
- 8. 如何使用C++檢查進程是否在運行
- 9. C++:如何檢查外部程序是否在運行?
- 10. C++如何檢查Outlook進程是否已在運行
- 11. 如何檢查我的多線程代碼是否在多線程上運行?
- 12. 如何檢查一個進程是否使用Delphi運行?
- 13. 檢查一個進程是否在Unix中運行
- 14. 檢查另一個窗體中的線程是否仍在運行
- 15. 如何檢查是否一個線程完成一個OnClickListener
- 16. 檢測一個線程是否正在運行java fx
- 17. 如何檢查是否一些進程正在運行
- 18. 檢查Flash是否運行在C#
- 19. 如何檢查某個進程是否正在運行或不
- 20. 如何檢查另一個記錄器是否正在運行?
- 21. 如何檢查進程是否從C++代碼運行?
- 22. 如何檢查線程代碼是否在try-catch塊中運行
- 23. 檢查進程是否正在運行
- 24. 檢查程序是否正在運行
- 25. 檢查進程是否正在運行
- 26. 檢查程序是否正在運行
- 27. 如何在安裝過程中檢查某個程序是否正在運行?
- 28. 如何檢查每個線程是否完成或不在多個線程中?
- 29. 如何檢查Linux中是否正在運行進程?
- 30. 如何定期檢查程序是否在Windows中運行?
歡迎堆棧溢出。請發佈您的代碼。你試過什麼了? –