我有一些耗时的方法:
public class TimeConsumingClass
{
public void TimeConsumingMethod()
{
//let's imagine my method works this way
for (var i = 0; i < 10000; i++)
Thread.Sleep();
}
}
之前它在主线程中执行。现在我需要在辅助线程中调用它,以免阻塞用户界面:
Task.Factory.StartNew(() => { new TimeConsumingClass().TimeConsumingMethod(); });
现在我需要让这个方法随时可以停止。因此,我想让我的方法以某种方式处理CancellationToken,同时我还想保持同步调用此方法的可能性(不使用CancellationToken)。我想到的最好的主意是向我的方法添加可选的CancellationToken参数,默认情况下为null(对于同步调用):
public class TimeConsumingClass
{
public void TimeConsumingMethod(CancellationToken cancellationToken = null)
{
//let's imagine my method works this way
for (var i = 0; i < 10000; i++)
{
if (cancellationToken.IsCancellationRequested)
return;
Thread.Sleep();
}
}
}
最近在.NET多线程方面有许多创新,我感觉有更好的方法来完成我要做的事情。是否有一种方法呢?
Thread.Sleep
实际代表的工作负载,这是一种最优解决方案。 - spender