0
私のDoWork()関数では、私たちのSIPサーバに登録します。その後、私は応答を待つ必要があります。しかし、私が得た応答は別のイベントで受信されます。しかし、DoWork()のフラグをチェックする前に、DoWork()はすべて準備ができており、応答は後に来ます。バックグラウンドでスレッドを結合するC#DoWork()
診断イベントで応答が得られるまで、DoWork()で待機する方法を見つけようとしています。私はそのイベントで設定されているグローバルフラグをDoWork()でチェックする必要があります。何かアドバイスのため
おかげで、
// Do work in background worker
//Will return less than 8 if there are no error message from the library
if (!this.bgwProcessLogin.CancellationPending)
{
// Register and wait for response
VaxSIPUserAgentOCX.RegisterToProxy(3600);
}
else
{
// Update label
if (this.lblRegistering.InvokeRequired)
{
// do something here
}
else
{
// Display error
}
}
// WAIT FOR A RESPONSE FROM THE DIAGNOTIC EVENT BEFORE CONTINUING - MAYBE JOIN HERE
if (!this.bgwProcessLogin.CancellationPending)
{
if (this.responseFlag)
{
// Do something here
}
else
{
// Do something else here
}
}
// Another function where I receive the response
private void VaxSIPUserAgentOCX_OnIncomingDiagnostic(object sender, AxVAXSIPUSERAGENTOCXLib._DVaxSIPUserAgentOCXEvents_OnIncomingDiagnosticEvent e)
{
string messageSip = e.msgSIP;
//Find this message in the sip header
string sipErrorCode = "600 User Found";
if (messageSip.Contains(sipErrorCode))
{
// Set global flag for response
this.responseFlag = true;
}
}
こんにちは(1)レスポンスフラグとは何ですか?それは本当に設定されてどこですか? (2)実際にバックグラウンドワーカーを使用する方法を投稿できますか? – Grzenio
こんにちは。応答は '600 user found' sipプロトコルです。 trueに設定されている場合、ユーザーが見つかりました。もっとシンプルに見せるためにコードを変更しました。私はscottyが最高の解決策を持っていると思う。私は今のところそれに行く。私は完全に完了したときに私はポストバックします。ありがとう。 – ant2009