【发布时间】:2012-10-08 20:48:54
【问题描述】:
我收到了来自 Resharper 的警告(“隐式捕获闭包:this”):这是否意味着这段代码正在以某种方式捕获整个封闭对象?
internal Timer Timeout = new Timer
{
Enabled = false,
AutoReset = false
};
public Task<Response> ResponseTask
{
get
{
var tcs = new TaskCompletionSource<Response>();
Timeout.Elapsed += (e, a) => tcs.SetException(new TimeoutException("Timeout at " + a.SignalTime));
if (_response != null) tcs.SetResult(_response);
else ResponseHandler += r => tcs.SetResult(_response);
return tcs.Task;
}
}
我不确定它是如何或为什么这样做的 - 它应该捕获的唯一变量是 TaskCompletionSource,这是有意的。这实际上是一个问题吗?如果是,我将如何解决它?
编辑:警告出现在第一个 lambda(超时事件)上。
【问题讨论】: