1
這一個給我一個很難。 的事情是,我有一個起着MIDI一些筆記代碼,我希望能夠暫停,所以我做了一個簡單的形式是這樣的:如何在Windows窗體上多線程(有效)?
namespace Music
{
public partial class Form1 : Form
{
static BackgroundWorker _bw = new BackgroundWorker
{
WorkerSupportsCancellation = true
};
private void button1_Click(object sender, EventArgs e)
{
if (!Playing)
{
Playing = true;
_bw.DoWork += Start_Playing;
_bw.RunWorkerAsync("Hello to worker");
}
else
{
Playing = false;
_bw.CancelAsync();
}
}
static void Start_Playing(object sender, DoWorkEventArgs e)
{
//Plays some music
}
}
}
,當我點擊它開始播放,但無論我做什麼,都無法停止。但事情是,如果我在控制檯中做同樣的事情,它的工作就非常完美。
我錯過了什麼嗎? 如何從表單中控制單獨的線程?
的`CancelAsync()`方法只是設置了`CancellationPending`屬性爲TRUE;。由工作線程來處理這個問題(很可能是通過定期檢查一個待處理的消息),因爲它認爲合適。 – Ani 2011-01-24 05:08:04