こんにちは仲間のプログラマイベントは関数の結果を壊します
私はTAPIライブラリを管理するC#にプログラムを書いています。私はSoftoneと呼ばれるソフトウェアのためのコマンドを持っており、ビジネスに関連しているので、(誰かがそれを要求しない限り)コードを与えません。私が直面している問題は次のとおりです。
たとえば、機能を実行するための呼び出しが必要なときに必要です。 かなり簡単です。だから、私はイベントhanlderを設定し、関数を呼び出すが、私は(Softone)が間違っているプログラムに与える結果を実行している間。手動またはその他の方法で実行されても、同じ機能が正しい結果をもたらします。私は、イベントハンドラを無効にして、関数を実行し、イベントハンドラを再起動しようとしました。しかしこれも失敗です。
私が望むのは、イベントが彼の機能のデータを改ざんするのを防ぐための別の方法です。提案するものは何かありますか?
私は初心者ですのでご理解ください。感謝:)
static public void RegisterTapi()
{
tapi.Initialize();
tapi.EventFilter = (int)(
TAPI3Lib.TAPI_EVENT.TE_CALLNOTIFICATION |
TAPI3Lib.TAPI_EVENT.TE_CALLINFOCHANGE |
TAPI3Lib.TAPI_EVENT.TE_DIGITEVENT |
TAPI3Lib.TAPI_EVENT.TE_PHONEEVENT |
TAPI3Lib.TAPI_EVENT.TE_CALLSTATE |
TAPI3Lib.TAPI_EVENT.TE_GENERATEEVENT |
TAPI3Lib.TAPI_EVENT.TE_GATHERDIGITS |
TAPI3Lib.TAPI_EVENT.TE_REQUEST);
tapi.ITTAPIEventNotification_Event_Event += new TAPI3Lib.ITTAPIEventNotification_EventEventHandler(TapiCall.tapi_ITTAPIEventNotification_Event_Event);
}
public static void tapi_ITTAPIEventNotification_Event_Event(TAPI3Lib.TAPI_EVENT TapiEvent, object pEvent)
{
switch (TapiEvent)
{
case TAPI3Lib.TAPI_EVENT.TE_CALLNOTIFICATION:
ITCallNotificationEvent tcallNotificationEvent = (TAPI3Lib.ITCallNotificationEvent)pEvent;
TAPI3Lib.ITCallInfo a = tcallNotificationEvent.Call;
switch (a.CallState)
{
case TAPI3Lib.CALL_STATE.CS_OFFERING://A new call has appeared
tapi.ITTAPIEventNotification_Event_Event -= TapiCall.tapi_ITTAPIEventNotification_Event_Event;
ActionOffering();
tapi.ITTAPIEventNotification_Event_Event += TapiCall.tapi_ITTAPIEventNotification_Event_Event;
break;
}
break;
}
break;
}
public static void ActionOffering()
{
string sqa_action = *SQL QUERY*
XTable ds_action = XSupport.GetSQLDataSet(sqa_action, null);
if (ds_action.Count > 0)
{
string caller_action = ds_action.Current["ACTION"].ToString();
XSupport.ExecS1Command(caller_action, null);
}
}
他のスレッドからイベントが発生していますか?もしそうなら、あなたはメインのスレッドに戻る必要があるでしょう。 –
何が起こっているかを見るためには、いくつかの検閲されたコードをそこに置くのが最善でしょう。 –
お返事ありがとうございました。コードを1分で投稿します。また、私はスレッドの提案をチェックします –