欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解

 更新時間:2021年09月10日 14:12:54   作者:weixin_33769125  
這篇文章主要介紹了C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

最近在學(xué)習(xí)citrix的xenserver6.2的源代碼,發(fā)現(xiàn)多處用到System.Threading命名空間下的ThreadPool.QueueUserWorkItem方法:

public static bool QueueUserWorkItem(WaitCallback callBack, object state);
publicstaticbool QueueUserWorkItem(WaitCallback callBack);

參數(shù)WaitCallback 本身是一個delegate,它在System.Threading命名空間中的定義如下:

[ComVisible(true)]
public delegate void WaitCallback(object state);

 于是問題來了,該如何給QueueUserWorkItem傳參呢?以下是我遇到的一些方式:

1,直接傳delegate。(不明白o(hù)bject o去了哪里?)

ThreadPool.QueueUserWorkItem(delegate
{
  for (int i = 0; i < 20 && TargetNode.Nodes.Count == 0; i++)
  {
    Thread.Sleep(100);
  }
  MainWindowCommandInterface.Invoke(delegate { TargetNode.Expand(); });
});

2,直接傳方法名。

ThreadPool.QueueUserWorkItem(WaitForReboot, connection);
private void WaitForReboot(object o)
{
}

3,用delegate構(gòu)造一個WaitCallback。

ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(Object o)
{
  ClientFillRectangle(0, 0, DesktopSize.Width, DesktopSize.Height, Color.Black);
}), null);

4,用含一個object類型的方法Connect構(gòu)造一個WaitCallback。

ThreadPool.QueueUserWorkItem(new WaitCallback(Connect), new KeyValuePair<VNCGraphicsClient, Exception>(vncClient, null));
private void Connect(object o)
{
}

5,WaitCallback類型的delegate。

ThreadPool.QueueUserWorkItem((WaitCallback)delegate(object o)
{
  // Sleep a short time before closing the splash
  Thread.Sleep(500);
  Program.Invoke(Program.MainWindow, Program.CloseSplash);
});

6,直接傳Lambda表達(dá)式。

ThreadPool.QueueUserWorkItem(o =>
{
  Program.Invoke(Program.MainWindow, () =>
  {
    PerformStorageSystemScan();
    if (systemsAfter.Count > systemsBefore.Count)
    {
      // the new item should be selected
.      comboBoxStorageSystem.SelectedItem = systemsAfter.Find(ss => !systemsBefore.Contains(ss));
      comboBoxStorageSystem.DroppedDown = true;
    }
  });
});

到此這篇關(guān)于C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解的文章就介紹到這了,更多相關(guān)C# 總結(jié)QueueUserWorkItem傳參幾種方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論