我的代码如下:
public static void methodA()
{
var bgw = new BackgroundWorker();
bgw.DoWork += worker_Dowork;
bgw.RunWorkerCompleted += worker_RunWorkerCompleted;
bgw.RunWorkerAsync();
}
static void worker_Dowork(object sender, DoWorkEventArgs e)
{
//I call this method from another class
if (Utilities.isInternet())
{
}
}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
当worker_Dowork
正在运行时,方法Utilities.isInternet()
未被调用或运行。
我该如何解决?
答案 0 :(得分:1)
可能存在一些非法的crossthread调用,因为BackgroundWorker
在另一个线程中调用worker_Dowork
方法。有时像这样的异常不会抛出,它们会被BackgroundWorker
类捕获。您可以在主线程中进行检查,如下所示:
public static void methodA()
{
var bgw = new BackgroundWorker();
bgw.DoWork += worker_Dowork;
bgw.RunWorkerCompleted += worker_RunWorkerCompleted;
if (Utilities.isInternet())
{
bgw.RunWorkerAsync();
}
}
static void worker_Dowork(object sender, DoWorkEventArgs e)
{
// Your code goes here
}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}