-1

サードパーティの dll を使用して Windows アプリケーションを作成しています。彼らは、使用するいくつかの事前定義されたメソッドを提供していました。SetTag()値を更新するために使用されるメソッドがあります。今私の仕事は、tcp クライアントからデータを取得し、このメソッドに送信することです。私のTCP部分はうまく機能しています。私はそれをテストしました。に電話した時点で問題が発生していますSetTag()。しばらくは正常に動作しますが、しばらくすると、ジャストインタイム デバッガーのポップアップが例外で表示されます。

myproject.vshost.exe で未処理の例外が発生しました

この例外がどこから発生しているのかわかりません。

TCP クライアントからデータを取得するたびにUpdateValues()、サードパーティを呼び出す my が呼び出されますSetTag()

// valuesInArray is an object array which contain
// the data from tcp client after converted to object
UpdateValues(valuesInArray); 

そして方法:

public void UpdateValues(object[] values)
{
    this.BeginUpdate();
    for (int i = 0; i < 9; i++)
    {
        this.SetTag(TagHandle[i], (values[i]), Quality.Good, FileTime.UtcNow);
    }
    this.EndUpdate(false);
}

データがtcpクライアントから来ていないシミュレーターを作成しましたが、タイマーティックイベントでデータを送信しています。その場合、エラーは発生せず、プログラムはスムーズに実行されます。TCP クライアントを使用してこのエラーが発生する理由と、それを取り除く方法を教えてください。

4

2 に答える 2

0

.NET 4 以降では、包含メソッド ( UpdateValues)をマークHandleProcessCorruptedStateExceptionsAttributeして、次のSecurityCriticalAttributeようないくつかの特別な例外をキャッチする必要があります。AccessViolationException

于 2013-10-10T08:45:26.770 に答える