无法在Backgroundworker中调用方法

时间:2014-04-10 04:38:16

标签: c# windows-phone-8

我的代码如下:

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()未被调用或运行。

我该如何解决?

1 个答案:

答案 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)
{

}