我的应用程序运行一些线程,每个线程都做了一些事情。 我希望每个帖子在列表框中显示其状态。
那么,一个线程如何识别自己(通过使用线程ID或其他东西)并将其状态设置为List
?
答案 0 :(得分:2)
您可以使用Thread.CurrentThread.ManagedThreadId标识托管主题。并记住Invoke对列表框的调用(或使用Dispatcher以防你使用WPF),因为除了线程以外的线程无法直接访问它。
答案 1 :(得分:1)
您可以将Invoke
与代表联系起来。然后每个线程负责更新它拥有的ListBoxItem。
答案 2 :(得分:1)
每个帖子都有一个id。您可以使用
访问它Thread t;
int id = t.ManagedThreadId;
要使用某种状态更新全局数据结构,我将使用字典并使用id作为键。请注意锁定该数据结构的访问权限:
Dictionary<int, SomeStateClass> threadStates = new Dictionary<int, SomeStateClass>();
public void updateThreadState(int id, SomeStateClass newState) {
lock (threadStates) {
threadStates[id] = newState;
}
}
答案 3 :(得分:1)
您可以保留要监控的Thread的集合(数组,列表,无论您想要什么)。线程类公开了您可能需要的许多属性,包括ThreadState属性。从那里可以很容易地显示您想要的信息。
这样你的工作线程就不用担心通知他们的状态了。