一般建议您不应该GC.Collect从您的代码中调用,但此规则的例外情况是什么?
我只能想到一些非常具体的案例,强制垃圾收集可能是有意义的.
想到的一个例子是服务,每隔一段时间醒来,执行一些任务,然后长时间睡眠.在这种情况下,强制收集以防止即将空闲的进程保持比需要的更多内存可能是个好主意.
是否还有其他可以接听电话的情况GC.Collect?
我正在翻译一个将非托管库包装到F#的C#类.我遇到了重写后面的析构函数这个看似简单的问题.
class Wrapper {
// P/Invoke ellided
private SomeType x;
public Wrapper() {
x = new SomeType();
Begin();
}
public ~Wrapper() {
End();
}
Run Code Online (Sandbox Code Playgroud)
我现在简化的F#代码如下:
type Wrapper() =
[<Literal>]
static let wrappedDll = "Library.dll"
[<DllImport(wrappedDll , EntryPoint = "Begin")>]
static extern void Begin()
[<DllImport(wrappedDll , EntryPoint = "End")>]
static extern void End()
let x = new SomeType()
do
Begin()
Run Code Online (Sandbox Code Playgroud)
如何修改此F#代码以具有相同的行为?我对F#析构函数的搜索没有出现在我的书籍或网络上.
谢谢.