私は小さなActiveXコントロールを構築しています。私は、ActiveXはjavascript関数を直接呼び出すことはできませんが、イベントを処理する必要があることを理解しました。したがって、私はイベントを作成しました。これはcodeprojectのコードサンプルからコピーされました。activexからjavascript関数を呼び出す
イベントは特定の状況でのみ機能するようです:イベントをすぐに呼び出すjavascript関数が呼び出されたときに機能します。
のActiveXイベント:コールの
[Guid("68BD4E0D-D7BC-4cf6-BEB7-CAB950161E79")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ControlEvents
{
//Add a DispIdAttribute to any members in the source interface to specify the COM DispId.
[DispId(0x60020001)]
void OnClose(string redirectUrl); //This method will be visible from JS
}
例私のjavascript関数は、長い操作を実行し、イベントを発生させるだけよりも、ActiveXのメソッドを呼び出したとき、それは動作しません、ここで私が何を意味するかの例です。それは動作します:
[ComVisible(true)]
public void Close()
{
if (OnClose != null)
{
OnClose("my test"); //Calling event that will be catched in JS
}
else
{
MessageBox.Show("No Event Attached"); //If no events are attached send message.
}
}
失敗したコールの例:
[ComVisible(true)]
public void Open()
{
try
{
Start();
}
catch (Exception e)
{
throw e;
}
}
関数は非常に長いメソッド呼び出しを開始し、数分に1回イベントを発生させ、情報をjavascriptに戻します。
なぜ動作しないのか分かりません。何が欠けている?申し訳ありませんが、質問が明確でない場合、私が得ているエラーは明らかではないので、ちょうど尋ねると私は質問を洗練されます。