相关疑难解决方法(0)

与lambdas一起使用的弱事件处理程序模型

好吧,所以这更像是一个答案而不是一个问题,但在提出这个问题之后,将Dustin Campbell,Egor的各个部分以及" IObservable/Rx/Reactive框架 "中的最后一个提示拉到一起,我想我为这个特殊问题制定了可行的解决方案.它可能会被IObservable/Rx/Reactive框架完全取代,但只有经验才会显示出来.

我故意创造了一个新问题,给我空间来解释我如何得到这个解决方案,因为它可能不会立即显而易见.

有很多相关的问题,大多数人告诉你,如果你想以后能够分离它们,你就不能使用内联lambda:

确实,如果希望以后能够分离它们,您需要保留对lambda的引用.但是,如果您只是希望事件处理程序在订阅者超出范围时自行分离,则此答案适合您.

.net c# events lambda memory-leaks

38
推荐指数
2
解决办法
1万
查看次数

测试/验证WeakReference

我想验证代码设置a WeakReference不会意外地保持对引用对象的强引用.(这是一个很容易意外地做到这一点的例子.)

这看起来是检查无意中强引用的最佳方法吗?

TestObject testObj = new TestObject();
WeakReference wr = new WeakReference(testObj);

// Verify that the WeakReference actually points to the intended object instance.
Assert.Equals(wr.Target, testObject);

// Force disposal of testObj;
testObj = null;
GC.Collect();
// If no strong references are left to the wr.Target, wr.IsAlive will return false.
Assert.False(wr.IsAlive);
Run Code Online (Sandbox Code Playgroud)

c# unit-testing weak-references

16
推荐指数
3
解决办法
3058
查看次数

标签 统计

c# ×2

.net ×1

events ×1

lambda ×1

memory-leaks ×1

unit-testing ×1

weak-references ×1