0

プロジェクトでは、Backgroundworker (vb.net) を使用しています。私は Windows 8 Pro (64 ビット) で作業しており、プロジェクトは正常に動作します... しかし、Windows 7 (64 ビット) を搭載したマシンに実行可能ファイルを転送すると、奇妙なことが起こります! Backgroundworker の DoWork は機能せず、直接 RunWorkerCompleted にスキップします。理由がわかりません。Visual Studio 2012 Express Edition でコンパイルします。これを解決するためのアイデアはありますか?ありがとうございました。

これはいくつかのコードです:

Private Sub bgw_extract_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgw_extract.DoWork
        MsgBox("test dowork") 'this appear
        extract_cycle() 'this isn't executed
        MsgBox("end dowork") 'this isn't executed
End Sub


Private Sub extract_cycle()
'nothing is executed here
        MsgBox("test2") 'not executed
        Try
            'my code....
        Catch ex As Exception
            MessageBox.Show(ex.ToString(), "Extract Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub


Private Sub bgw_extract_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles
 bgw_extract.RunWorkerCompleted
         MsgBox("RunWorkCompleted") 'this is executed in every case
End Sub
4

1 に答える 1

0

おそらく、extract_cycleメソッドは、ターゲットマシンに存在しないアセンブリを参照しています。したがって、JITされたとき(したがってMsgBox("test2")実行される前)に例外がスローされます。

未処理の例外をキャッチした場合(またはイベントログを調べた場合)、何が起こっているかを確認できるはずです。

于 2012-11-24T14:32:06.263 に答える