小编Aar*_*len的帖子

Resharper:隐含捕获闭合:这个

我从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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我不确定它是如何或为什么这样做 - 它应该捕获的唯一变量是TaskCompletionSource,这是故意的.这实际上是一个问题,如果是这样我将如何解决?

编辑:警告在第一个lambda(Timeout事件)上.

.net c# resharper

65
推荐指数
2
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1

resharper ×1