C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90439 / 1階層)  AddHandler Eventの別スレッドについて
□投稿者/ 魔界の仮面弁士 (2098回)-(2019/03/11(Mon) 18:02:21)
No90434 (TanuTanu さん) に返信
> Dim Button As mshtml.IHTMLElement = doc.all.item("button")
この場合、Option Strict Off にしないとコンパイルできなくなりますね。


> Event1 = DirectCast(Buttoni, mshtml.HTMLInputTextElementEvents2_Event)
変数名が違うようですが、ここの "Buttoni" とその直前の "Button" は同じものですか?


> AddHandler Event1.onclick, AddressOf WebDisp_click
この Event1 はローカル変数でしょうか。クラスのインスタンスフィールドでしょうか。
ローカル変数だとしたら、GC されて切断されることを防ぐため、フィールド変数に変更して
イベント通知が不要になるまで、インスタンスを保持しておく必要があります。


> 下記コードでは、buttonをクリックした後、webページダイアログが表示され
元の Web ページ側にダイアログ表示のスクリプトがあるのだと思いますが、
JavaScript 側で既に onclick イベントが割り当てられている場合、
そちらの処理が先に発生し、VB 側に通知されるのはその後になるかと思います。
(イベントの割り当て方法にもよりますが)


> Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
戻り値を返し忘れていますよ。


> 欲が出てしまい『■90409 VB.NETのHTMLDocumentイベントについて』 で追加しましたイベント
> を別スレッドで動作させたいのですが出来ますでしょうか?
button 要素 の onclick イベントに割り当てたいようですが、どの部分をどのスレッドで動作させたいのでしょうか。

(1) WebDisp_click を、UI スレッド上で実行したい
(2) WebDisp_click を、特定のワーカースレッドで呼び出したい
(3) WebDisp_click を、その都度、新しいスレッドで呼び出したい
(4) Sub DoSomething が、UI スレッド上で呼びだされるようにしたい
(5) Sub DoSomething が、特定のワーカースレッドで呼び出したい
(6) Sub DoSomething が、その都度、新しいスレッドで呼び出したい
(7) 「MessageBox」の呼び出し部のみを、UI スレッドで実行させたい
(8) 「MessageBox」の呼び出し部のみを、特定のワーカースレッドで呼び出したい
(9) 「MessageBox」の呼び出し部のみを、その都度、新しいスレッドで呼び出したい

イベントの発火にしろ、デリゲートの呼び出しにせよ、それが実行されるスレッドは、
「イベント通知を受け取る側/デリゲートインスタンスの生成側」でコントロールするものではなく、
「イベントを発生させる側/デリゲートでメソッドを呼び出す側」でコントロールするものかと。


たとえば RaiseEvent だとしたら、基本的には「イベントの発生元」のスレッドが使われるので、
他スレッドへのイベント通知が必要なら、ISynchronizeInvoke を使うなどします。


呼び出し元に頼らず、イベントを受け取った側で他のスレッドに処理したいなら、
自身を該当スレッド上で Invoke しなおすことで対処してみてください。
たとえば、常に UI スレッド上で処理を行いたいなら、InvokeRequired で判定して Invoke しなおすとか。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←AddHandler Eventの別スレッドについて /TanuTanu →Re[2]: AddHandler Eventの別スレッドについて /TanuTanu
 
上記関連ツリー

AddHandler Eventの別スレッドについて / TanuTanu (19/03/11(Mon) 14:26) #90434
AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/11(Mon) 18:02) #90439 ←Now
│└ Re[2]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/11(Mon) 20:50) #90440
Re[1]: AddHandler Eventの別スレッドについて / Azulean (19/03/11(Mon) 21:06) #90441
  └ Re[2]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/12(Tue) 11:11) #90444
    ├ Re[3]: AddHandler Eventの別スレッドについて / PANG2 (19/03/12(Tue) 12:31) #90446
    │└ Re[4]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/12(Tue) 13:17) #90452
    ├ Re[3]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/12(Tue) 14:24) #90454
    │└ Re[4]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/12(Tue) 14:31) #90455
    │  └ Re[5]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/12(Tue) 15:03) #90456
    │    └ Re[6]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/12(Tue) 17:37) #90458
    │      └ Re[7]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/12(Tue) 18:32) #90461
    │        └ Re[8]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/12(Tue) 19:54) #90463
    │          ├ Re[9]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/13(Wed) 09:51) #90469
    │          └ Re[9]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/13(Wed) 09:32) #90468
    │            └ Re[10]: AddHandler Eventの別スレッド / TanuTanu (19/03/13(Wed) 14:49) #90473
    │              └ Re[11]: AddHandler Eventの別スレッド / 魔界の仮面弁士 (19/03/13(Wed) 16:03) #90475
    └ Re[3]: AddHandler Eventの別スレッドについて / PANG2 (19/03/13(Wed) 16:01) #90474
      └ Re[4]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/13(Wed) 16:55) #90476
        ├ Re[5]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/13(Wed) 20:27) #90477
        │└ Re[6]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/15(Fri) 11:55) #90511 解決済み
        └ Re[5]: AddHandler Eventの別スレッドについて / PANG2 (19/03/14(Thu) 18:59) #90492
          └ Re[6]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/15(Fri) 10:28) #90508 解決済み
            └ Re[7]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/18(Mon) 16:52) #90531
              └ Re[8]: AddHandler Eventの別スレッドについて / 魔界の仮面弁士 (19/03/18(Mon) 18:18) #90533
                └ Re[9]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/19(Tue) 20:43) #90543
                  └New Re[10]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/20(Wed) 14:04) #90547
                    └New Re[11]: AddHandler Eventの別スレッドについて / TanuTanu (19/03/20(Wed) 23:14) #90556
                      └New Re[12]: AddHandler Eventの別スレッドについて / PANG2 (19/03/21(Thu) 07:17) #90557

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信