显示每个线程的状态

时间:2011-12-20 08:48:55

标签: c# multithreading

我的应用程序运行一些线程,每个线程都做了一些事情。 我希望每个帖子在列表框中显示其状态。

那么,一个线程如何识别自己(通过使用线程ID或其他东西)并将其状态设置为List

4 个答案:

答案 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属性。从那里可以很容易地显示您想要的信息。

这样你的工作线程就不用担心通知他们的状态了。