我在我的一个应用程序中使用的后台工作线程遇到了一些奇怪的问题。最近我改善了一些GUI问题,但现在当其他电脑上的人运行.exe文件或安装我的OneClick部署时,后台工作者不会进入dowork事件。两个版本之间的逻辑没有变化。我进行了比较,除了添加更多的错误日志记录外,没有任何变化。
我已经包含了消息框和断点,在dowork事件中除了在自己的PC上没有进入任何位置。即使是远程调试它也不会进入DoWork事件。
有什么建议吗?
按钮单击事件调用runworkerasync事件。
以下是运行DoWork事件的代码。为了简化,我删除了它所执行的其他函数。它只是运行一个返回字符串并将其放置在名为scanresults的列表中的函数。
它完全忽略了dowork事件,进入runworkercomplete事件,并显然针对索引传递了一个错误,因为列表还没有被填充,因为执行此操作的函数已被跳过。再次强调,无论我如何将其发布给其他人,它在我的个人电脑上都能完美运行。感谢您的任何帮助。
我已经包含了消息框和断点,在dowork事件中除了在自己的PC上没有进入任何位置。即使是远程调试它也不会进入DoWork事件。
有什么建议吗?
按钮单击事件调用runworkerasync事件。
private void ScanButton_Click_1(object sender, RoutedEventArgs e)
{
Scan = new BackgroundWorker();
Scan.WorkerReportsProgress = true;
Scan.DoWork += new DoWorkEventHandler(Scan_DoWork);
Scan.ProgressChanged += new ProgressChangedEventHandler(Scan_ProgressChanged);
Scan.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Scan_RunWorkerCompleted);
Scan.RunWorkerAsync();
}
以下是运行DoWork事件的代码。为了简化,我删除了它所执行的其他函数。它只是运行一个返回字符串并将其放置在名为scanresults的列表中的函数。
private BackgroundWorker Scan;
public void Scan_DoWork(object sender, DoWorkEventArgs e)
{
System.Windows.Forms.MessageBox.Show("Inside the DoWork");
BackgroundWorker bw = sender as BackgroundWorker;
float percentageDone = 0.0F;
ScanResults = new List<string>();
try
{
System.Windows.Forms.MessageBox.Show("Doing first scan check");
ScanResults.Add(Functions.LocalComputerName());
percentageDone = ((1 / 1f) * 100f);
bw.ReportProgress((int)percentageDone);
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message, "Error Encountered", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
public void Scan_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{
if (ScanResults.Count == 0)
{
System.Windows.Forms.MessageBox.Show("Empty");
return;
}
MachineNameBox.Text = ScanResults[0];
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message, "Error Encountered", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
它完全忽略了dowork事件,进入runworkercomplete事件,并显然针对索引传递了一个错误,因为列表还没有被填充,因为执行此操作的函数已被跳过。再次强调,无论我如何将其发布给其他人,它在我的个人电脑上都能完美运行。感谢您的任何帮助。