調用Thread.CurrentThread.Join()的效果是什麼,如果/什麼時候調用它會有意義?Thread.CurrentThread.Join()何時有意義?
回答
什麼是調用Thread.CurrentThread.Join()的作用
你會阻塞當前線程的執行,並有效地死鎖定。它將導致當前線程阻塞,直到當前線程結束,這絕不會發生。
,如果/什麼時候有意義調用它?
這樣做確實沒有意義。你不應該以這種方式調用這個方法。
在一個側面說明,由於您使用的.NET 4,我會建議在一般使用Thread.Join
避免。使用新的Task
/Task<T>
類在很多方面都好得多,因爲您可以輕鬆地附加延續(或者如果您確實需要阻止,請始終致電Task.Wait()
)。
您的注意事項:您是否將C#5(.NET 4.5)與C#4(.NET 4.0)混淆? –
@JeppeStigNielsen否 - 'Task'和'Task
@JeppeStigNielsen請參閱:http://msdn.microsoft.com/en-us/library/dd321424(v=vs.100)。aspx –
沒有,CurrentThread.Join()是沒有意義的
這可能使你的程序停止運行,使得線程一個等待線程一個例如。
是不是真的
CurrentThread.Join()
您在實際代碼看見 - 這我有點懷疑,除非是某些黑客以防止其他線程加入當前線程上 - 或者是它
CurrentThread.Join(someTimeout)
後者相當於
Thread.Sleep(someTimeout)
不同之處在於加入了關於當前線程允許如果您處於GUI/COM狀態,則會繼續傳輸消息。
它在可觀察的世界中確實有意義。比方說你在main中有一個隊列監聽器,並且你想讓主線程永遠運行。 而不是做while(true)並把你的代碼放到循環中,最後一行你可以寫這個。這樣,當前線程也將成爲應用程序內生成的其他線程的父線程。 認爲它是應用程序的入口點。
- 1. JavaScript ==何時比===更有意義?
- 2. 格式()中的{!s}何時有意義?
- 3. Node.js何時有意義使用異步?
- 4. 何時使用GPU有意義?
- 5. in_array沒有任何意義
- 6. GetVirtualPath沒有任何意義
- 7. 什麼時候放棄MVVM有意義?
- 8. 在使用decodeObjectForKey時使retainCounts有意義:
- 9. caddr_t的意義何在,何時使用?
- 10. Git diff沒有任何意義
- 11. RSpec'ing路線有任何意義嗎?
- 12. 如何有意義的是Activity.mayStop()?
- 13. PHP:SQL蜱沒有任何意義
- 14. ArrayIndexOutOfBoundsException:5沒有任何意義?
- 15. 如何編寫有意義的文檔?
- 16. java時間意義gc.log?
- 17. 實時信號的意義?
- 18. XPS有什麼意義?
- 19. 接口有什麼意義?
- 20. aclocal有什麼意義?
- 21. tornado.locale.Locale.translate有什麼意義?
- 22. git fetch有什麼意義?
- 23. django-recaptcha沒有意義
- 24. RecursiveIterator有什麼意義?
- 25. 錯誤10500,沒有意義
- 26. Semaphore.drainPermits()有什麼意義?
- 27. AppWidgetManager.INVALID_APPWIDGET_ID有什麼意義?
- 28. MySQL錯誤沒有意義?
- 29. g ++ -Wreorder有什麼意義?
- 30. CSS問題沒有意義
您是否閱讀過文檔? –
你有沒有在某個地方看到這個代碼?甚至可以考慮調用它,這是非常糟糕的。 –
你應該在_another_thread't'上調用't.Join()',而不是在當前線程上。請參閱[文檔](http://msdn.microsoft.com/en-us/library/95hbf2ta.aspx)。 –