/// <summary>初期処理</summary> private void Form1_Load(object sender, EventArgs e) { // 登録エントリ // スレッド this.AeeTh = new AsyncEventEntry( AsyncEventEnum.EventClass.Thread, "Thread", null, new ParameterizedThreadStart(this.ParameterizedThreadStartDgt)); AsyncEventFx.RegisterAsyncEvent(this.AeeTh); // --- // スレッド プール this.AeePl = new AsyncEventEntry( AsyncEventEnum.EventClass.ThreadPool, "ThreadPool", null, new WaitCallback(this.WaitCallbackDgt)); AsyncEventFx.RegisterAsyncEvent(this.AeePl); // --- // WinForm this.AeeWin = new AsyncEventEntry( AsyncEventEnum.EventClass.WinForm, "WinForm", this, new AsyncEventFx.SetResultDelegate(this.SetResultDgt)); AsyncEventFx.RegisterAsyncEvent(this.AeeWin); // --- // WPF this.AeeWPF = new AsyncEventEntry( AsyncEventEnum.EventClass.WPF, "WPF", this, new AsyncEventFx.SetResultDelegate(this.SetResultDgt)); AsyncEventFx.RegisterAsyncEvent(this.AeeWPF); }
/// <summary>非同期イベント エントリ削除</summary> /// <param name="aee">非同期イベント エントリ</param> /// <returns> /// ・成功:true /// ・失敗:false /// </returns> /// <remarks>メッセージID付きのエントリは自動的に削除される。</remarks> public bool UnRegisterAsyncEvent(AsyncEventEntry aee) { // 非同期イベント エントリのリスト List<AsyncEventEntry> aee_lst = null; if (this.AEES.ContainsKey(aee.FuncID)) { // 既に登録済み // 非同期イベント エントリのリストを取得 aee_lst = this.AEES[aee.FuncID]; // 非同期イベント エントリを削除 // IEquatable対応済み。 return aee_lst.Remove(aee); } else { // 未登録 return false; } }
/// <summary>非同期イベント エントリ登録</summary> /// <param name="aee">非同期イベント エントリ</param> public void RegisterAsyncEvent(AsyncEventEntry aee) { // 非同期イベント エントリのリスト // (1つの機能IDに対して複数のエントリを登録可能) List<AsyncEventEntry> aee_lst = null; if (this.AEES.ContainsKey(aee.FuncID)) { // 既に登録済み // 非同期イベント エントリのリストを取得 aee_lst = this.AEES[aee.FuncID]; } else { // 未登録 // 非同期イベント エントリのリストを生成して追加 aee_lst = new List<AsyncEventEntry>(); this.AEES.Add(aee.FuncID, aee_lst); } // 非同期イベント エントリのリストにエントリを追加 aee_lst.Add(aee); }
/// <summary>非同期イベント エントリ削除</summary> /// <param name="aee">非同期イベント エントリ</param> /// <returns> /// ・成功:true /// ・失敗:false /// </returns> /// <remarks>メッセージID付きのエントリは自動的に削除される。</remarks> public static bool UnRegisterAsyncEvent(AsyncEventEntry aee) { lock (AsyncEventFx._lock) // staticなのでロックする。 { return AsyncEventFx.NPS.UnRegisterAsyncEvent(aee); } }
/// <summary>非同期イベント登録</summary> /// <param name="aee">非同期イベント エントリ</param> /// <returns> /// ・成功:true /// ・失敗:false /// </returns> public static bool RegisterAsyncEvent(AsyncEventEntry aee) { lock (AsyncEventFx._lock) // staticなのでロックする。 { AsyncEventFx.NPS.RegisterAsyncEvent(aee); } return true; // 将来的にfalse対応があるかもしれないので。 }