Ejemplo n.º 1
0
 /// <summary>
 /// 可以在多執行緒模式下對UI物件進行任何方式的更新
 /// </summary>
 /// <remarks>
 /// 可以自行提供任何要更新的程式碼
 /// </remarks>
 /// <param name="syncObj">支援可以Invoke/InvokeRequired的物件</param>
 /// <param name="syncFunc">要執行的函式</param>
 /// <example>
 /// <code language="C#">
 /// this.btnConnect.SafeInvoke(() => { this.btnConnect.Text = "Disconnect"; });
 /// // 上面就跟下面的結果一樣
 /// this.btnConnect.UpdateControlText( "Disconnect" ); 
 /// </code>
 /// </example>
 public static void SyncInvoke(this ISynchronizeInvoke syncObj, SyncInvokeFunc syncFunc)
 {
     if (syncObj.InvokeRequired)
     {
         syncObj.Invoke(new Action<ISynchronizeInvoke, SyncInvokeFunc>(SyncInvoke), new object[] { syncObj, syncFunc });
     }
     else
     {
         syncFunc();
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 可以在多執行緒模式下對UI物件進行任何方式的更新
 /// </summary>
 /// <remarks>
 /// 可以自行提供任何要更新的程式碼
 /// </remarks>
 /// <param name="syncObj">支援可以Invoke/InvokeRequired的物件</param>
 /// <param name="syncFunc">要執行的函式</param>
 /// <example>
 /// <code language="C#">
 /// this.btnConnect.SafeInvoke(() => { this.btnConnect.Text = "Disconnect"; });
 /// // 上面就跟下面的結果一樣
 /// this.btnConnect.UpdateControlText( "Disconnect" );
 /// </code>
 /// </example>
 public static void SyncInvoke(this ISynchronizeInvoke syncObj, SyncInvokeFunc syncFunc)
 {
     if (syncObj.InvokeRequired)
     {
         syncObj.Invoke(new Action <ISynchronizeInvoke, SyncInvokeFunc>(SyncInvoke), new object[] { syncObj, syncFunc });
     }
     else
     {
         syncFunc();
     }
 }