问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# 中怎么使用带参数的多线程呢

发布网友 发布时间:2022-04-09 16:34

我来回答

2个回答

热心网友 时间:2022-04-09 18:03

寒。。。楼上怎么就直接抄msdn的代码呢。。。
msdn的代码很不好看的。。。
楼主我帮你写了个例子,你自己看看就明白了。:

struct IpAndPort
{
public string Ip;
public int Port;
}

private void Form1_Load(object sender, EventArgs e)
{
Thread thr = new Thread(a);
IpAndPort aa = new IpAndPort();
aa.Ip = "123.123.123.123";
aa.Port = 123;
thr.Start((object)aa);
}

private void a(object aa)
{
IpAndPort ip = (IpAndPort)aa;
MessageBox.Show(ip.Ip + ":" + ip.Port.ToString());
}

注:参数必须是object型的,并且只能一个。其他类型的可以通过显式转换成object型,然后在线程方法里再转回来。
如果有多个变量则可以自己定义一个struct或者类,然后转换成object型,然后在线程方法里再转回来。

另ThreadStart是没有参数的,要使用带参数的方法这样使用:
Thread thr = new Thread(a);
而不是
Thread thr = new Thread(new ThreadStart(a));

热心网友 时间:2022-04-09 19:21

线程池:msdn例子如下
下面的代码示例说明如何使用线程池异步创建和写入一组文件。每个写入操作都作为一个工作项排队,并在完成后发出信号。主线程等待所有项发出信号后退出。
using System;
using System.IO;
using System.Security.Permissions;
using System.Threading;

// Request permission to create and write files to C:\TestTest.
[assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum,
All = @"C:\TestTest")]

class Test
{
static void Main()
{
const int numberOfFiles = 5;
string dirName = @"C:\TestTest";
string fileName;

byte[] byteArray;
Random randomGenerator = new Random();

ManualResetEvent[] manualEvents =
new ManualResetEvent[numberOfFiles];
State stateInfo;

if(!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}

// Queue the work items that create and write to the files.
for(int i = 0; i < numberOfFiles; i++)
{
fileName = string.Concat(
dirName, @"\Test", i.ToString(), ".dat");

// Create random data to write to the file.
byteArray = new byte[1000000];
randomGenerator.NextBytes(byteArray);

manualEvents[i] = new ManualResetEvent(false);

stateInfo =
new State(fileName, byteArray, manualEvents[i]);

ThreadPool.QueueUserWorkItem(new WaitCallback(
Writer.WriteToFile), stateInfo);
}

// Since ThreadPool threads are background threads,
// wait for the work items to signal before exiting.
WaitHandle.WaitAll(manualEvents);
Console.WriteLine("Files written - main exiting.");
}
}

// Maintain state to pass to WriteToFile.
class State
{
public string fileName;
public byte[] byteArray;
public ManualResetEvent manualEvent;

public State(string fileName, byte[] byteArray,
ManualResetEvent manualEvent)
{
this.fileName = fileName;
this.byteArray = byteArray;
this.manualEvent = manualEvent;
}
}

class Writer
{
static int workItemCount = 0;
Writer() {}

public static void WriteToFile(object state)
{
int workItemNumber = workItemCount;
Interlocked.Increment(ref workItemCount);
Console.WriteLine("Starting work item {0}.",
workItemNumber.ToString());
State stateInfo = (State)state;
FileStream fileWriter = null;

// Create and write to the file.
try
{
fileWriter = new FileStream(
stateInfo.fileName, FileMode.Create);
fileWriter.Write(stateInfo.byteArray,
0, stateInfo.byteArray.Length);
}
finally
{
if(fileWriter != null)
{
fileWriter.Close();
}

// Signal Main that the work item has finished.
Console.WriteLine("Ending work item {0}.",
workItemNumber.ToString());
stateInfo.manualEvent.Set();
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
早孕验血报告单怎么看 测试早孕的方法 联想电脑退货注意什么 公务员裸眼视力必须0.3吗 山东农业大学机电学院科研成果 山东农业大学机械与电子工程学院实验研究 山东农业大学机电工程学院有哪些重点实验室和研究中心? 复发性无菌性脑膜炎的诊断 电子简历自我评价 电子信息技术专业个人简历自我评价 楚留香手游9月7日更新公告 天机阁指点江山功能开放-手游资讯-安族网 System中 线程TID48 ntoskrnl.exe!ExQueueWorkItem+0x2f有时突然占用CPU30%到40% 我的资料员证件掉了,也不记得证件号,是中国建设教育协会发的证,要怎么才能查询到证件呢? 魔吞不动城_霹雳布袋戏资讯网怎么不见了? 霹雳布袋戏中是哪一部第一次组建或者开始出现魔吞不动城的? 我灰菜那的 霹雳布袋戏九轮异谱中魔吞十二宫到底是哪十二个人 霹雳布袋戏中霹雳开天记之创神纪下部第一次组建或者开始出现魔吞不动城是动漫的哪一集? 我灰菜那的 魔吞不动城_霹雳布袋戏偶动漫网 霹雳创神篇下阙魔吞不动城真的杀了倦收天吗 魔吞不动城中麒麟面具是素还真吗 霹雳布袋戏里那个魔吞不动城里的人厉害吗 霹雳布袋戏中是哪一部第一次组建或者开始出现魔吞不动城的?是哪一部和动漫是第几集出现 我灰菜那的, 魔吞不动城十二宫为什么不一起出 魔吞不动城十二宫人物和素还真什么关系 魔吞不动城的组织野心 魔吞不动城的十二宫图腾介绍 悟空被老魔吞吃的时候你担心吗为什么八戒是如何报信的作者这样写有什么好处 《魔吞九界天》txt下载在线阅读全文,求百度网盘云资源 魔吞不动城的介绍 巨鹿之战发生的期间肥水之战发生的时间赤壁之战发生的时间长平之战发生... CCTV微视和央视影音的区别,哪个好用一些? 中国有没有大龙虾繁殖的城市? 中国最大的龙虾在哪个城市 centos安装设置基础软件仓库时出错 求解决。。还有怎么安装到我指定的电脑分区里啊。,我里面 如何能在git bash里检测到node的版本 使用git版本控制工具一般都是下到最新的linux内核,如何使用git下载旧的linux内核? 关于好好学习的语句 “好好学习,天天向上”用各种语言怎么说? “好好学习”用英语怎么说 怎样能好好学习语言~~~ 祝贺同学好好学习的祝贺语言 鼓励青年学生好好学习的优美语言每日佛音 怎样才能好好学习英语 激励自己争分夺秒好好学习的警句 有哪写 祝愿别人好好学习的语句有哪些? 激励同学好好学习的话语 请问,“好好学习,天天向上”用各种语言怎么说? 男人梦见妻子被别人说哭了是什么意思? 考研预报名9月24日至27日,27日报名可以吗?应该不晚吧 截止27日16:00|2019无锡事业单位报名第三天,报名成功人数4013人,无人报考岗位32个 梦见妻子被俩人砍死