[過去ログ]
C#, C♯, C#相談室 Part95 (1002レス)
C#, C♯, C#相談室 Part95 http://mevius.5ch.net/test/read.cgi/tech/1508168482/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
868: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/17(月) 19:47:56 ID:afVseoTo0 >>860 一応調べてみたが、この場合は微妙だし、どっちでも良いと思う。 > https://hinative.com/ja/questions/11390949 > https://xcelgo.com/emulation-vs-simulation/ 要は、中身まで模倣するのがemulationで、外面だけ合わせるのがsimulation。 よって実行速度は通常simulator>>>emulatorになる。 void Button_Clicked(Object^ sender, EventArgs^ e) { some_func(); } で some_func を直接呼ぶならsimulation、 Button_Clicked を呼んでもまあsimulation、 OnClick や PerformClick を呼ぶならemulation、というのが俺の見解。 emulation扱いの2つはClickイベントを発生させる=UIスレッドのイベントキューに積むだけであり、 ハードウェアマウスのイベントと見分けが付かないから。 (内部的にハードウェアマウスのクリックを模倣している) 対して上記simulation扱いの2つは、 simulatorが「このボタンをクリックしたら結果的にこの関数を実行する」と知っていて、 外面動作を合わせる為にそこを呼んでいる。 当然emulationの実行速度はsimulationと比べて遅い。 だから、最初からsome_func()呼べよ、という若さは分かるが、そこをケチっても実質的意味はない。 ここら辺は年を取れば老獪になるというか、手の抜きどころが分かるようになる。 emulation方式だと当然、UIスレッドがハングアップしていたら永久に処理されないし、 未処理のイベントがあればその後に処理されることになる。 ここら辺は完全にハードウェアマウスの動作と同じになる。 simulation方式だと、すぐに呼ばれる為、 非UIスレッドでDSLを処理した場合、未処理のUIイベントがあると処理順序が逆転してしまう。 だから、DSL実行環境とGUIの実行環境が同一の場合はDSL処理はUIスレッドでやるしかない。 だったら最初からPerformClickでやればそういう心配すらないだろ、ということになる。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/868
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 134 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s