我試圖使用線程的第一次,並想出了這個:第一次multithreader
Thread myThread = new Thread(() =>
{
test = Class1.getNumbers(param1, param 2);
MessageBox.Show(test.toString());
});
這不會對我做任何事,但。我做錯了什麼?
我試圖使用線程的第一次,並想出了這個:第一次multithreader
Thread myThread = new Thread(() =>
{
test = Class1.getNumbers(param1, param 2);
MessageBox.Show(test.toString());
});
這不會對我做任何事,但。我做錯了什麼?
閱讀本free chapter from a very good book(誠實插件 - 沒有inscentive這裏):
這是consice併爲您提供的訣竅,你要以增量的方式,這樣你就不會走太高的水平過快。你的問題的答案是在前幾段...
也許我以這種錯誤的方式去做......我只想在執行方法時更新進度條。 – TheGateKeeper 2012-04-12 20:45:19
如果你不給線索的嘮叨,那麼去http://stackoverflow.com/questions/1259949/how-do-i-implement-a-progress-bar-in-c – 2012-04-12 20:46:54
這就是我需要的。嘗試此操作之前,我顯然需要了解更多信息! – TheGateKeeper 2012-04-12 20:58:23
您沒有啓動線程。
myThread.Start();
(您也可以在MessageBox的調用語法錯誤...)
我想使用線程首次
儘量避免使用線程直接上課。這很少需要。
查找到:
的順序更多或更少。
它們都提供線程頂層來幫助你。
我認爲在初學者的腦海中可能會混淆,因爲避免「Thread類」和避免「Multi threading」是截然不同的,但聽起來是一樣的......只是一個想法 - 另一個想法 - 它可能是一個壞在沒有學習rdbms/sql的情況下,沿着與學習EF相同的路線跳過Thread類(我不想批評,只是在想..) – 2012-04-12 20:38:31
@Gabriel - 我在編輯時添加了_directly_。 – 2012-04-12 20:39:29
@ Gabriel:是的,一個好的學習途徑是使用線程_in控制檯App_。然後在WinForms中使用Bgw。 – 2012-04-12 20:45:00
您需要通過調用Start
啓動線程。
此外,重要的是要注意,MessageBox.Show
泵的消息。這就是爲什麼它正常工作沒有在該線程上顯式調用Application.Run
。儘管大多數UI表單和控件不以這種方式工作。一般情況下,不要嘗試從工作線程訪問或創建任何UI元素。
一個MessageBox
可以從技術上比主UI線程的線程上運行,但它可能會導致一些奇怪的問題。例如,此消息框可能卡在UI線程顯示的模式對話框後面。正因爲如此,建議不要在工作線程中顯示UI元素,即使這些元素是通過自我抽取調用如Form.ShowDialog
或MessageBox.Show
來完成的。
你錯過了對「開始」的調用。在定義'myThread'之後嘗試添加'myThread.Start()'。 – 2012-04-12 20:28:01
您正試圖從工作線程顯示消息框。 UI元素只能在主線程上創建。 – 2012-04-12 20:28:15
爲了學習.NET平臺中的線程,我強烈建議閱讀以下內容:http://www.yoda.arachsys.com/csharp/threads/index.shtml – 2012-04-12 20:29:31