我需要为我的c#项目运行线程
因为我有一个int调用函数列表
例如
protected void Page_Load(object sender, EventArgs e)
{
list<int> lst=new list<int>();
lst.addrange(/// get list of int from data base);
foreach(int number in lst)
{
call(number );
}
getAllThreads();
}
public void call(int x)
{
Thread newThread = new Thread(() => { calc(x); });
newThread.Start();
newThread.name=x.tostring();
}
public void calc(int x)
{
..... do something
}
我需要知道哪些线程仍在运行或已完成
即
我需要知道哪个int仍在运行或已完成
我尝试使用Thread.CurrentThread.Name
与其他功能一样
private void getAllThreads()
{
string name= Thread.CurrentThread.Name;
}
但它总是为空
我尝试使用
Thread.CurrentThread.ManagedThreadId
但它的价值与
不同 Thread.id
答案 0 :(得分:0)
尝试使用适合此类事物的库。微软的Reactive Framework非常完美。
以下是代码:
protected void Page_Load(object sender, EventArgs e)
{
List<int> lst = new List<int>(new[] { 1, 3, 3 });
/// get list of int from data base);
var query =
from number in lst.ToObservable()
from result in Observable.Start(() => calc(number))
select result;
query
.Subscribe(
result =>
{
/* can handle each result here */
},
() =>
{
/* all done here */
});
}
这会自动为您管理所有线程。
Just NuGet&#34; System.Reactive&#34;并将using System.Reactive.Linq;
添加到您的代码中。