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

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

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

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

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

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,直接操作控件

直接放进去有什么意义啊 在UI线程里干UI线程本来应该的活和不应该干的活,那你还用啥子多线程啊

假如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(...

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

父窗口和子窗口都是同一个线程创建的; 所谓跨线程就是在主线程中创建了已个新的线程,在新的线程中去调用主线程中的某些控件,资源等,这就是跨线程!! 比如窗体中有个文本框textbox 如果你在程序中 new了一个thread,那么在这个线程thread中...

网站地图

All rights reserved Powered by www.1862.net

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