簡體   English   中英

C#,visual studio 2010,如何停止一個方法,線程?

[英]C#, visual studio 2010, how to stop a method, threads?

我只是開始學習c#(和一般的編程)。 我正在做一個基於字符串播放音樂的小型大學項目。 我正在使用Windows窗體。 當你按下“播放”按鈕時,它會啟動一個帶有for循環的方法,該循環逐個遍歷字符串中的每個字符並播放相應的音符。 工作得很好,但我一直在嘗試添加一個“停止”按鈕,這將停止播放音樂,但到目前為止,當音樂播放時,表格被凍結,我無法擊中任何其他按鈕...只是想知道是我可以通過不同的線程實現我想要的唯一方法嗎? (我們還沒看過線程!)

編輯:嘿謝謝大家的答案!! 那非常快! :)

查看BackgroundWorker類以在后台播放音樂。 它比自己操作線程簡單得多。

這是一個概述:

http://www.albahari.com/threading/part3.aspx#%5FBackgroundWorker

只是想知道是我能通過不同線程實現我想要的唯一方法嗎?

通常,這是最常見的方法。 我建議你看一下BackgroundWorker組件。 它允許您在后台線程上運行工作(“播放注釋”),但也提供取消支持。

你的問題的簡單答案是肯定的。

您正在主線程上循環播放音樂,這意味着當代碼在循環中執行時,您無法從UI接收任何事件。

要解決此問題,您需要在后台線程上運行音樂循環。

使用Application.DoEvents(); 如果你還不想使用線程,那么在每次迭代之后。 Theads是最好的解決方案,但正如我理解你的問題,你正在等待你先學習線程:)調用DoEvents()允許在你調用它時處理窗口消息,所以如果你經常調用它,窗口不應該被阻止。 但請將此視為解決方法, 而不是最佳解決方案 最好的靈魂將使用線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM