第二次执行backgroundworker时出现InvalidOperationException

时间:2011-09-03 15:52:40

标签: wpf xml vb.net timer backgroundworker

我正在vb2010 express中使用wpf和vb.net创建一个应用程序,并且遇到一个让我发疯的问题。

我有一个每分钟执行一次后台工作的计时器:

Private Sub timer_Tick() Handles timer.Tick
    If Not bworker.IsBusy Then
        bworker.RunWorkerAsync()
    End If
End Sub

backgroundworker正在使用xmlelement和xmldataprovider:

Private Sub bworker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bworker.DoWork
    Dim source As XmlDataProvider = Application.Current.Resources("r1")
    Dim sometext As String = "something"
    Dim elemento As XmlElement = source.Document.CreateElement("elemento")
    elemento.InnerText = sometext
    e.Result = elemento
End Sub

然后我在RunWorkerComplete上使用e.Result将XmlElement添加到源代码。它在我第一次执行backgroundworker时工作正常,但是当计时器第二次调用它时,它会在“elemento.InnerText = sometext”行中抛出InvalidOperationException,为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DispatcherTimer代替上面的普通Timer吗?