C# 多线程 等待命令如何设置呢

C# 多线程 等待命令如何设置呢,第1张

最好采用委托,开辟另一个线程,在后台运行一些 *** 作。这样就不至于等待的时候白屏,界面假死。如果对委托不太了解,我可以再给你举个例子:

public delegate void weituoming();//若调用的后台函数有参数,此处也应有相应的参数

实现功能的函数中应这样写:

weituoming a= houtaiprogram;//a为委托名,houtai为函数名,此处作为方法使用,代表在后台运行的程序,实现一定的功能

aBegininvoke(null,null)//开始执行houtaiprogram函数

对houtaiprogram的定义

public void houtaiprogram()

{

执行你的 *** 作。

}

上述的做法是一般的多数做法,希望能帮到你

觉得设置一个标记比较好 boolean flag=false;

例如一个子线程:

class childThread extends Thread

{

while(true)

{

public void run()

{

flag=true//当子线程运行完成后标记设为true

}

}

}

然后根据该标记的值判断子线程是否执行。

你可以这样写:

childThread ct=new childThread();

ctstart();

if(ctflag == false)

{

Threadsleep(10);[color=#00FF00]当子线程没有执行完毕,就让主线程等待}[/color]

如果不设置标记判断 而是直接让主线程 Threadsleep(xxx)睡眠是不合理的。

原因是:

由于主线程和子线程是并发运行的 睡眠的时间不好控制 如果时间太短 可能子线程没有运行完主线程就又开始运行了。如果时间太长 影响程序的执行效率 所以这个时间是不好控制的。

上面有的直接 Threadsleep(100);完全是想当然的想法。 直接这样写有可能是会出错的 你可以试下。

所以我觉得还是设置一个标记比较好。

1、存在处以业务逻辑类,存在map,初始化。

2、存在线程池 最大200,ThreadFactory可以默认

3、单线程处理ip的类,构造方法包含是需参数Map,

4、外部循环 调用线程池,生成线程 传参 map 和当前循环次数

5、线程处理完ip后,将外部传来的循环次数做key,结果做value插入map,唤醒主线程判断map中的数量是否==需处理的ip的数量,选择跳出或继续等待。

你这个程序问题在new = Thread( selfsubfunc(i) ) 传进去的时候就已经调用了selfsubfunc

改成 new = Thread( target=selfsubfunc, args=(i,) )

另外i 数字太小也看不出来,因为工作量太小,在线程的一个时间片内函数就执行完了,看不到切换的过程,设成if i>10000就明显了

看了别人的回答,我提出我的不同想法。当然仁者见仁,楼主看着办吧。

1、对于多线程的话,首先创建一个主线程,作用是只创建能够完成任务的子线程,每个子线程可以在处理器空闲时并行工作,也可以排队工作。而这样的工作方式全交给系统调度,我们不需要写任何代码,且这样的工作方式从技术上讲,用相同的代码可以既支持单CPU,也可以支持多CPU,毕竟现在双核了嘛!

2、具体思路就是:主线程上手先创建10个子线程,且用WaitForMultipleObjects等待,这样,哪个子线程完成任务退出了,主线程可以立刻知道这个消息,再创建一个子线程。

3、另外不知道楼主研究过作业吗?像这样的程序要求用作业是再何时不过了,作业的功能是非常强大的,因此对作业的编码也会比较复杂得多,如果楼主不太会用作业,那就不用作业方式也行的。

4、对于大数据量的处理,为什么不考虑用内存映射文件呢(CreateFileMapping())?而且对读写处理我们也可以通过内存映射文件加多线程的办法来提高程序处理速度的,且速度应该是相当明显的吧!

让当前线程休眠

try {

Threadsleep(1000);

} catch (InterruptedException e1) {

//捕获异常

e1printStackTrace();

}

//线程休眠1000毫秒(1秒)后

以上就是关于C# 多线程 等待命令如何设置呢全部的内容,包括:C# 多线程 等待命令如何设置呢、如何使“主线程”等待“子线程”执行结束后再继续执行、java多线程相互等待等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9804312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存