我試圖開發一個WPF應用程序,當按下按鈕時(並在同一按鈕再次按下時停止它)在後臺運行其他進程。啓動/停止後臺功能
嗯,這裏的重點是我稱之爲監視文件夾的過程,因此,它不會在任何時候結束。
我嘗試了線程,但是當我按下按鈕時創建一個新的線程對象時,由於存在不同的代碼塊,我再次按下它時無法訪問它。
我認爲更好的方法是使用BackgroundWorker,但我不明白如何使用它。
這是我現在的代碼。 mon
是有,我想在後臺運行(mon.MonitoriceDirectory
)
if (this.monitoring)
{
var dialog = new System.Windows.Forms.FolderBrowserDialog();
dialog.ShowNewFolderButton = false;
System.Windows.Forms.DialogResult result = dialog.ShowDialog();
if (dialog.SelectedPath != "")
{
monitorizeButton.Content = "Stop";
textBlockMonitorize.Text = "Monitoring...";
this.monitorizando = false;
mon.monitorizePath = dialog.SelectedPath;
Thread newThread = new Thread(mon.MonitorizeDirectory);
newThread.Start();
}
}
else
{
newThread.Abort(); // Here is the problem, I can't access to that cuz
// it's in another codeblock.
monitorizeButton.Content = "Monitorice";
textBlockMonitorize.Text = "Ready";
this.monitorizando = true;
}
你回答了你自己的問題。在方法之外設置值(在類中)。 – kevintjuh93
您是否看過任務並行庫的任務取消?這是取消異步工作的當前黃金標準https://msdn.microsoft.com/en-us/library/dd997396%28v=vs.110%29.aspx – Gusdor
@Polyfun現在好點?該程序是西班牙語,所以請原諒我的英語。 –