java入参必传_post传参方式

java入参必传_post传参方式最近在学习citrix的xenserver6.2的源代码,发现多处用到System.Threading命名空间下的ThreadPool.QueueUserWorkItem方法:publicstaticboolQueueUserWorkItem(WaitCallbackcallBack,objectstate);publicstaticboolQueueUserWo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近在学习citrix的xenserver6.2的源代码,发现多处用到System.Threading命名空间下的ThreadPool.QueueUserWorkItem方法:

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

publicstaticbool QueueUserWorkItem(WaitCallback callBack);

参数WaitCallback 本身是一个delegate,它在System.Threading命名空间中的定义如下:

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

 于是问题来了,该如何给QueueUserWorkItem传参呢?以下是我遇到的一些方式:

1,直接传delegate。(不明白object 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构造一个WaitCallback。

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

4,用含一个object类型的方法Connect构造一个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表达式。

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;
    }
  });
});

 

转载于:https://www.cnblogs.com/summer1987/p/4624633.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193379.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何解决win7开机提示未能连接一个Windows服务「建议收藏」

    如何解决win7开机提示未能连接一个Windows服务「建议收藏」1.以安全模式打开电脑;2.打开运行菜单,在运行对话框中输入CMD,回车打开命令对话框;3.然后在命令对话框中输入“NETSHWINSOCKRESETCATALOG”命令,点击Enter;4.重启电脑。

    2022年5月15日
    49
  • 五大主流浏览器及四大内核1

    五大主流浏览器及四大内核1

    2021年10月23日
    42
  • TensorFlow中学习率[通俗易懂]

    TensorFlow中学习率[通俗易懂]学习率学习率属于超参数。学习率决定梯度下降速度的快慢,学习率越大,速度越快;学习率越小,速度越慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。指数衰减学习率指数衰减学习率是在学习率的基础上增加了动态变化的机制,会随着梯度下降变化而动态变化tf.train.expo…

    2022年6月1日
    50
  • 抖音网红简易时钟代码

    抖音网红简易时钟代码<template><divclass=”clock”><!–线–><hrstyle=”width:350px;position:absolute;top:368px;right:0;”><!–时–><ulcl…

    2022年6月28日
    42
  • onpropertychange属性

          当一个input标签的value通过键盘改变后失去焦点的时候,我们可以用onchange捕获事件,IE和FireFox都有效。而通过JavaScript来改变value的时候,onchange无法捕获事件,这时候我们可以用onpropertychange来捕获onpropertychange对于JavaScript和键盘对value的改变都有效。遗憾的是,onpropertychange事件只在IE中有效,FireFox中无效。尽FireFox的oninput可以来弥补(不必失去焦点),但是也仅

    2022年4月6日
    50
  • vs实现用户注册登录_用户注册登录怎么填写

    vs实现用户注册登录_用户注册登录怎么填写publicstaticUserInfoGetUser(stringname,stringpwd){//填写搜索姓名和密码的sql语句stringsql=string.Format(“select*fromUserInfowhereLoginName='{0}’andPassword='{1}'”,name,pwd);DataTabledt=DBHelper.ExcuteTab.

    2022年10月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号