【发布时间】:2010-12-13 06:39:11
【问题描述】:
我之所以使用“volatile”是因为它只是含糊其辞。
我有一个类,它有一个名为StopRequested 的属性。该标志可以随时由其他线程设置,并且需要向我的代码指示它应该停止正在执行的操作并退出(这是一个基于 Windows 服务的进程,当调用 Stop 时,所有处理都需要清理并停止)。
我希望创建一些其他类来执行实际的处理工作,但是这些类也必须注意“停止”标志。您不能只传递标志,因为它将传递一个副本,并且您不能将属性作为ref 类型传递。
那么如何将随时可能更改的属性传播到其他类中呢?
我唯一能想到的就是传递对父类的引用,但我不喜欢将工作类与父类耦合以获取一个标志。任何建议将不胜感激。
编辑:
这是一个基本的例子:
public class A
{
public bool StopRequested { get; set; }
private Worker = new Worker();
public void DoWork();
{
worker.DoWork();
}
}
public class Worker
{
public void DoWork()
{
while(!StopRequested)
{
....
}
}
}
【问题讨论】:
-
请注意,.NET 4 附带了一个专门为此构建的类:
CancellationTokenSource,它分发了CancellationToken,您将其分发给您的工作人员。
标签: c# oop properties