脱線しすぎた
イベントベースの非同期パターンってどうやって元のスレッドで完了通知を実行してるんだろ?
↓
Control.BeginInvoke もどうやってるんだろ?
↓
WinForm なら、ウィンドウにメッセージ投げればできるのかも
↓
これって .NET 以前でも同じことだよなぁ
↓
Advanced Windows を読みふける
↓
ウィンドウメッセージのキューはスレッド毎と知る。 な、なんだってー!
using System; using System.Threading; using System.Windows.Forms; namespace WindowsForms2 { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault( false ); Thread a = new Thread( Start ); a.Start(); Thread b = new Thread( Start ); b.Start(); Application.Run( new Form1() ); } public static void Start() { Application.Run( new Form1() ); } } }
Form1 は適当に用意してください。なお、中途半端な知識に基づいているため、これは正しいものなのかわかりません。
↓
本当に3つの Form が出て動いた…びっくり
↓
そういえば STA って、これと何か関係あるの?
↓
STA がウィンドウメッセージを使用してメソッドの呼び出しを行ってることを知る。 な、なんだってー!
↓
mozilla の COM もどきも同じ仕組みなの?
↓
コード見てみるもどこが何だかわからず…。あれ、何してたんだっけ? ← 今ここ