www.1862.net > C#多线程中控件的InvokE()中参数为什么不能直接传...

C#多线程中控件的InvokE()中参数为什么不能直接传...

你都已经用匿名委托用 => 了,这不是 Lambda 是啥! Invoke() 方法参数是一个委托类型,要是不用匿名委托的话,你得定义一个 delegate 类型对象传进去。

这个问题很明显啊,你调用methodInfo.Invoke 方法的时候没有传递参数进去,参数不匹配,当然报错了。在使用反射机制动态调用方法时,你先要知道此方法需要什么参数,参数的类型,参数的个数等等。比方说我有一个方法:publc void TestMethod(int...

思路如下: 把想对另一线程中的控件实施的操作放到一个函数中,然后使用delegate代理那个函数,并且在那个函数中加入一个判断,用 InvokeRequired 来判断调用这个函数的线程是否和控件线程处于同一线程中,如果是则直接执行对控件的操作,否则利...

一个最简单的C#反射实例,首先编写类库如下: namespace ReflectionTest { public class WriteTest { //带参数的公共方法 public void WriteString(string s, int i) { Console.WriteLine("WriteString:" + s + i.ToString()); } //带一个参数的...

1 /// 2 /// 直接调用Invoke 3 /// 4 private void TestInvoke() 5 { 6 listBox1.Items.Add("--begin--"); 7 listBox1.Invoke(new Action(() => 8 { 9 listBox1.Items.Add("Invoke"); 10 })); 11 12 Thread.Sleep(1000); 13 listBox1.Items.Add(...

首先不能在非创建控件线程调用控件,Control.InvokeReauqired判断是否是创建控件线程,不是为true,则需要invoke到创建控件的线程,是就为false,直接操作控件

假如Winform界面上有个Lable控件,叫做lb_Msg,现在通过UDP服务线程收到了新的数据,想在lb_Msg上显示出来。 1、声明一个委托 private delegate void SetMessageDelegate(Label control, string msg); 2、为此委托实例化一个函数 private void s...

//recevie类里加几行代码以取得那个textboxTextBox tb=null;public void Start(TextBox tb=null){this.tb=tb;//你原本的start中的其它代码}//以下内容也添加至Receive类public delegate void textbox_delegate(string msg);public void textbox(...

你怎么invoke的? 只有在创建Label的那个线程才能更改label上的内容 创建Label和创建Form是同一个线程 Form的Invoke方法可以将一个委托放在创建Form的线程上运行

一楼正解 你是写在GuidProc这个类里面的,这个是不行的.必须写在Form的类中或者子类中.就是说:this.Invoke中的this必须指的是一个窗体对象. 补充: 原因:声明的委托需要参数. private delegate void SetTextDelegate(string value); 解决:修改代码...

网站地图

All rights reserved Powered by www.1862.net

copyright ©right 2010-2021。
www.1862.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com