<分区>
我有几个按钮可以使用后台工作程序做一些事情。我想知道点击了哪个按钮,所以我这样做了:
public MyClass()
{
_worker.DoWork += worker_DoWork;
_worker.RunWorkerCompleted += worker_RunWorkerCompleted;
_worker.ProgressChanged += worker_ProgressChanged;
_worker.WorkerReportsProgress = true;
}
private void First_Button_Click(object sender, RoutedEventArgs e)
{
_worker.RunWorkerAsync();
}
private void Second_Button_Click(object sender, RoutedEventArgs e)
{
_worker.RunWorkerAsync();
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
Button clickedButton = (Button)sender;
switch (clickedButton.Name)
{
case "First_Button":
directory = _ftp.GetCurrentDate(true);
break;
case "Second_Button":
directory = _ftp.GetCurrentDate(false);
break;
case null:
return;
}
}
当我单击其中一个按钮时,我得到 System.InvalidCastException: Unable to cast object of type 'System.ComponentModel.BackgroundWorker' to type 'System.Windows.Controls.Button' 。
我知道线程安全调用的重要性,并且我之前在 this site 的帮助下完成了这项工作,但我不知道如何处理这个问题。请帮忙。