我们有一个具有1200行长方法(线程的运行方法)的遗留应用程序。该方法大多是一个while(true)包含长句子的序列。如何将“提取方法”重构应用于一段代码
以下C#区存在于该方法大约50倍:
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
我想知道正确的(如果可能的话)的方式于该区域提取到的新方法。
正如我所说,该片段(区域)在该方法内出现约50次。请注意#区域内的退货(将退出此时段)。
因此该方法具有以下结构:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs ev)
while(true) {
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
.
.
.
}
}
如果这实际上是被标记为java吗? – nbrooks
@nbrooks很好的捕获。 –
在.net 4.5中,这个'BackgroundWorker'可以替换为'Task','async'和'await'。试一试。 –