用AutoResetEvent之类的线程同步。
解决方案 »
- c#开发的系统在其它电脑不能访问的问题
- C#中有数据库中的 like %%写法吗
- 问几个关于在C#winforms中水晶报表的问题
- 这个正则表达式怎么写呀?
- 我是一个c#新手,不知道如何实现,想要其他的project调用另外一个project内的函数?
- 关于UDP广播
- 自定义控件的使用问题
- 我写了一个WinForm的DataGrid的翻页类,希望对你有所帮助!
- [winform]急问简单问题:如何使用treeview---下星期一就要完成!
- 如何才能得到局域网中的所有用户?
- 在安装Microsoft Visual Studio 2017 Installer Projects插件时报错
- 第一次加载 ReportViewer很慢
{
await Task.Yield(); var tcs = new TaskCompletionSource<bool>(); Task.Run(() =>
{
foreach(var item in list)
{
if(check(item)) //check方法就是你去检查的代码,这个你直接完成
{
tcs.SetResult(item); //检查成功异步返回
}
}
}); tcs.Task.Wait(); //同步等待完成 ,这里其实也可以直接返回tcs.task
}当然这只是其中一种简便的完成方式。其实也还有利用 CancelTokenSource 的控制,任何一个优先完成后,直接把CancelTokenSource Cancel掉就行。或者采用信号量控制也是ok的
谢谢你的回复
这个办法是行不通的~ 比如说A 线程 进行了设置 但是B线程可能在你设置之间就进入了! A完成后 B也会执行的
谢谢你的回复
这个办法是行不通的~ 比如说A 线程 进行了设置 但是B线程可能在你设置之间就进入了! A完成后 B也会执行的
行不通的~ A 进行设置时 可能B已经进入了 你这设置是无效的既然是写多线程应用,那么怎么就不知道访问公共资源是需要加锁的呢?
仅凭自己的臆想,就否定别人合理的建议,这绝不是科学的治学态度
谢谢你的回复
这个办法是行不通的~ 比如说A 线程 进行了设置 但是B线程可能在你设置之间就进入了! A完成后 B也会执行的
行不通的~ A 进行设置时 可能B已经进入了 你这设置是无效的既然是写多线程应用,那么怎么就不知道访问公共资源是需要加锁的呢?
仅凭自己的臆想,就否定别人合理的建议,这绝不是科学的治学态度谢谢你的回复 加锁的话效率要慢的多! 每生成一个码要请求一下进行验证 这样解出的机率很小了。
谢谢回复 线程同步我试了也不行! 速度太慢了谢谢回复 我现在试着用task同步看看能不能解决~