C# ThreadStart和ParameterizedThreadStart区别

C# ThreadStart和ParameterizedThreadStart区别1.Thread是启动一个线程,但是没有参数2.ParameterThreadStart线程可以接受一个输入参数ThreadStart:ThreadStart这个委托定义为voidThreadStart(),也就是说,所执行的方法不能有参数。

ThreadStart和ParameterizedThreadStart区别

最主要区别:
1.Thread 是启动一个线程,但是没有参数
2.ParameterThreadStart 线程可以接受一个输入参数

ThreadStart:
ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数。

ThreadStart threadStart=new ThreadStart(ProcessData);
Thread thread=new Thread(threadStart);
thread.Start();
public void SayHelloToXiaohouye()
{ 
   
string strName="My name is Xiaohouye";   Console.Write("Hello "+strName);
}
 上面很简单的例子,我们用定义了一个ThreadStart类型的委托,这个委托制定了线程需要执行的方法: 
 SayHelloToXiaohouye,在这个方法里声明一个变量,并输出.这就构成了最简单的多线程的例子,一般情况下,我们都是用这个的。

ParameterThreadStart:
ParameterThreadStart的定义为void ParameterizedThreadStart(object state),使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下 :

ParameterizedThreadStart threadStart=new ParameterizedThreadStart(SayHelloToXiaohouye)
Thread thread=new Thread() ;
thread.Start("Xiaohouye"); //注意参数一定要用object 类型,否则报错
public void SayHelloToXiaohouye(object name)
{ 
    //使用时候需要转换
Console.Write("Hello my name is {0}",name.ToString());
}

从不是创建控件的线程访问它的三种解决方法

问题:在ui线程创建的子线程操作ui控件时,系统提示错误详细信息为:
线程间操作无效: 从不是创建控件“XXX”的线程访问它。
原因:访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。

解决办法:
1、把CheckForIllegalCrossThreadCalls设置为false

public Form1()
{ 
   
    InitializeComponent();
    Label.CheckForIllegalCrossThreadCalls = false;
}

2、利用委托
在这里插入图片描述

3、使用 BackgroundWorker控件
在应用程序中实现多线程的首选方式是使用 BackgroundWorker 组件。BackgroundWorker 组件使用事件驱动模型实现多线程。辅助线程运行 DoWork 事件处理程序,创建控件的线程运行ProgressChanged 和 RunWorkerCompleted 事件处理程序。注意不要从 DoWork 事件处理程序调用您的任何控件。
下面的代码示例不异步执行任何工作,因此没有 DoWork 事件处理程序的实现。TextBox 控件的Text 属性在 RunWorkerCompleted 事件处理程序中直接设置。
在这里插入图片描述

今天的文章C# ThreadStart和ParameterizedThreadStart区别分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33490.html

(0)
编程小号编程小号

相关推荐

发表回复

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