ThreadStatic attribute将静态变量声明为unique-per-thread。 你知道一个简单的模式来正确处理这些变量吗?ThreadStatic对象的确定性处置
我们在ThreadStatic之前使用的是一个ThreadContextManager。每个线程都分配了一个保留所有线程特定信息的ThreadContext。我们产生了一些线程并让它们工作。然后,当它们全部完成时,我们抛弃了ThreadContentManager,然后处理所有上下文(如果它们是IDisposable的话)。
我没有看到将此模式转换为ThreadStatic对象的直接方式。这些对象将被处置,因为线程死亡,所以没有任何参考。但是,只要有可能,我们都倾向于确定性处置。
更新
我真的不直接控制线程 - 我使用微软CCR,其中有一个线程池,做任务。当所有的任务完成后,我正在处理Dispatcher(包含线程池)。问题是 - 在线程的主函数结束时,我没有机会做任何事情 - 所以我不能在线程运行结束时手动处理事情。我可以以某种方式从线程外部访问线程的静态对象吗?
我不想在每个任务后清理。任何给定的线程在我的线程池中按顺序执行许多任务。它具有上下文的原因是为每个任务节省昂贵的数据结构分配。这意味着我只能在所有线程完成后清理。 – ripper234 2008-09-25 13:30:25