Resharper からこの警告 ("Implicity Capture Closure: 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です。これは実際に問題ですか? 問題がある場合、どうすれば解決できますか?
編集: 警告は最初のラムダ (タイムアウト イベント) にあります。