一 概述
在C#语言中使用ParameterizedThreadStart创建进程,首先需要创建ParameterizedThreadStart委托的实例,然后再创建Thread类的实例
<span style="color:#333333">ParameterizedThreadStart pts=new ParameterizedThreadStart( 方法名 );
Thread t=new Thread(pts);</span>
<!–more–>
二 实例
2.1 实例一 创建一个方法输出0〜n的所有偶数,使用 ParameterizedThreadStart 委托调用该方法,并启动打印偶数的线程
2.1.1 代码
<span style="color:#333333">class Program
{
static void Main(string[] args)
{
ParameterizedThreadStart pts = new ParameterizedThreadStart(PrintEven);
Thread t = new Thread(pts);
t.Start(10);
}
//打印0~n中的偶数
private static void PrintEven(Object n)
{
for(int i=0;i<=(int)n; i = i + 2)
{
Console.WriteLine(i);
}
}
}</span>
2.1.2 效果图
2.1.3 说明
-
在使用ParameterizedThreadStart委托调用带参数的方法时,方法中的参数只能是object类型并且只能含有一个参数
-
在启动线程时要在线程的Start()方法中为委托的方法传递参数
-
如果需要通过ParameterizedThreadStart委托引用多个参数的方法,由于委托方法中的参数是object类型的,传递多个参数可以通过类的实例来实现
2.2 实例二 创建一个方法输出指定范围内数值的偶数,并创建线程调用该方法
2.2.1 代码
<span style="color:#333333">class Program
{
static void Main(string[] args)
{
ParameterizedThreadStart pts = new ParameterizedThreadStart(PrintEven);
ParameterTest pt = new ParameterTest(1, 10);
Thread t = new Thread(pts);
t.Start(pt);
}
private static void PrintEven(Object n)
{
//判断n是否为ParameterTest 类的对象
if(n is ParameterTest)
{
int beginNum = ((ParameterTest)n).beginNum;
int endNum = ((ParameterTest)n).endNum;
for(int i = beginNum; i <= endNum; i++)
{
if (i % 2 == 0)
{
Console.WriteLine(i);
}
}
}
}
}
public class ParameterTest
{
public int beginNum;
public int endNum;
public ParameterTest(int a,int b)
{
this.beginNum = a;
this.endNum = b;
}
}</span>
2.2.2 效果图
2.2.3 说明
-
运行该程序,在控制台上将输出 1〜10 的偶数,即2、4、6、8、10
-
从代码可以看出,通过为 ParameterTest 类中的字段赋值,并将其通过线程的 Start 方法传递给委托引用的方法 PrintEven,即可实现在委托引用的方法中传递多个参数的操作
今天的文章C#开发之——ParameterizedThreadStart(14.4)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33573.html