2

.NET プロジェクト (WinForms) で agsXMPP を使用しています。次のコード ブロックがあります。これは、クライアントからメッセージを受信するたびに実行されます。メッセージが受信されるたびに、このブロックが実行され、プログラムが終了します.. :( 何が起こっているのかわかりません。助けてください!

これはスレッドと関係がありますか?(agsXMPP は動作するスレッドをカプセル化すると聞いたことがあります)

   Private Sub messageReceived(ByVal sender As Object, ByVal msg As protocol.client.Message)
    Dim chatMessage() As String
    Static Dim Hi_ed As Integer = 0
    chatMessage = msg.From.ToString.Split("/")
    Dim chatSender As String = chatMessage(0)

    If Not IsWorking Then
        IsWorking = True
        If Not ProcessCommands(msg.Body, chatSender) Then
            Dim sStr As String = ParseEnglish(msg.Body)

            Select Case sStr
                Case "HI"
                    If Hi_ed = False Then
                        SendGTalkMsg("Hi. How do you do?", chatSender)
                        Hi_ed = True
                    Else
                        SendGTalkMsg("हाय वाई कुछ नहीं हम तो !!!", chatSender)
                    End If
                Case "DETAILS PLEASE"
                    SendGTalkMsg(". Currently there are N no of sams running on me: :)", chatSender)
            End Select
        End If
        IsWorking = False

        Exit Sub
    Else
        SendGTalkMsg("I'm working right now. Please have patience.", chatSender)
    End If
End Sub

**編集* *** ここで、生成された EXE ファイルを実行すると、このイベントが完了した後に「応答しない」エラーが発生します。これは、明らかに例外があることを意味しますが、try catch ブロックをエスケープしています。:(

これは私が得るエラーです:

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01:   updatecheck.exe
Problem Signature 02:   1.0.0.0
Problem Signature 03:   4e8ed73e
Problem Signature 04:   mscorlib
Problem Signature 05:   4.0.0.0
Problem Signature 06:   4dd23522
Problem Signature 07:   1526
Problem Signature 08:   4f
Problem Signature 09:   System.InvalidOperationException
OS Version:  6.1.7600.2.0.0.256.1
Locale ID:  1033
Additional Information 1:   0a9e
Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
Additional Information 3:   0a9e
Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement       
offline:
C:\Windows\system32\en-US\erofflps.txt
4

2 に答える 2

2

まあ、まあ、まあ。それはすべて、

My.Computer.Network.DownloadFile(SourceZipFile, DestinationZipFile, "<userid>", "<password>", True, 100000, True)

trueに設定されました。そのため、ファイルのダウンロードの進行状況ボックスが表示されるたびに、スレッドが混乱していました。DownloadFileのShowUIパラメーターをFalseに変更すると、すべてが正常に機能しました。:)

しかし、これについて明確な説明がありますか?

于 2011-10-07T13:26:33.233 に答える
0

これは、スレッドと未処理の例外の組み合わせが原因である可能性が最も高いです。メイン スレッド以外の未処理の例外の動作を制御する方法はないように思われるため、メイン スレッドの外部で発生する可能性のあるすべての例外を処理することが不可欠です。これには、上記のような非同期コールバックが含まれます。これは、メイン スレッドから離れて行われることが多いためです。非メイン スレッドで例外が処理されない場合、アプリケーションは単純に終了します。メッセージがありません。

エラーをログに記録するか、デバッグ トレース ウィンドウに書き込む try...catch ブロックで、すべてのコールバックおよびその他の非同期メソッドをラップすることをお勧めします。

于 2011-10-07T05:35:57.733 に答える