finalizer

    2熱度

    1回答

    我在運行到不同窗口的處理程序上工作。 On保持控制器,即主要的PApplet,另一個正在運行一些OpenGL,同時也是的子類別。 創建OpenGL窗口的一個實例並不是很難,但是如何在不調用exit()的情況下調用並殺死整個進程。我只想關閉第二個窗口並釋放所有的資源。 我找不到任何合適的解決方案。

    1熱度

    4回答

    我正在寫一個ASCOM望遠鏡驅動程序,我需要保證幾個串口 命令發送到範圍,以防止客戶端應用程序 無法正常斷開連接或崩潰時移動範圍。 我嘗試添加一個終結,看起來像這樣 ~Telescope() { Common.AbortSlew(); Common.SetTracking(false); } 它使得在SendSerialPortCommand()方法,然後沒有實際發送

    1熱度

    1回答

    將VS2010調試器用於託管代碼是否可以觸發終結器線程運行? 使用案例: 使用Tasks可以在Task對象的終結拋出異常,如果任務是 自己已經拋出的異常和那些還沒有得到照顧。 驗證錯誤修正誰是一個未處理的原因可能會耗費時間,因爲您需要等待終結器線程在確定修復程序正常工作之前踢入。 我通常不會使用終結器自己編寫代碼,因爲它會導致很多頭痛,並且我也向Microsoft發送了關於此的郵件。但是,雖然它是

    2熱度

    2回答

    從MSDN文檔報價爲GC.WaitForPendingFinalizers(): 上終結器運行的線程是不確定的,所以不能保證此方法將終止。 我真的不明白這句話。這種方法在哪種情況下不會終止?這與終結器運行的線程有什麼關係?他們爲什麼說這個線程是「未指定的」? 關於終結器線程,我認爲以下是正確的(?): 這裏只有一個終結線程。 終結器總是在單獨的線程上運行(即永遠不會在主線程或任何其他用戶創建的線程

    5熱度

    4回答

    可能重複: Why would you ever implement finalize()? 我看到了下面的代碼一些java文件: public void finalize() { if (conn != null) { try { conn.close(); } catch (SQLException e) { } } }

    3熱度

    2回答

    這難道不是安全地調用: component.Dispose(); (如果我檢查空)從終結 ,如果我改變的代碼如下: ~MyResource() { Dispose(); } public void Dispose() { // Check to see if Dispose has already been called. if(!this.disposed)

    7熱度

    2回答

    後終結不叫我的測試代碼: public class A : CriticalFinalizerObject { ~A() { File.WriteAllText("c:\\1.txt", "1z1z1"); } } class Program { static void Main(string[] args) {

    1熱度

    2回答

    我有一些非託管內存結構用於與C++ dll進行通信。 每個這樣的結構都必須手動釋放,所以我把它包裝在MyUnmanagedStructure中,它實現了IDisposable。 我總是需要這些結構的可變數量在一起,所以我有一個集合MyUnmanagedStructureCollection它也實現了IDisposable。 (見下面的小例子代碼) 只要我的媒體庫的用戶總是調用Dispose()或包

    12熱度

    2回答

    我曾經假定當終止調試時(例如通過點擊停止按鈕或按Shift + F5),任何實現終結器或IDisposable的類都將被處置。 我有一些類實現IDisposable。在應用程序從調試器中退出時(或者在生產中崩潰),有幾件事情我想要(嘗試)並做。現在,Dispose()似乎不會被調用,也不是終結器~MyClass(){} 有沒有辦法做到這一點?

    5熱度

    2回答

    比方說,我已經用close()方法創建了一些資源類來清理資源,我想覆蓋finalize()以釋放資源(並打印一個警告)如果有人忘記調用close()。這怎麼能正確完成? 僅建議用於本地(JNI分配)資源嗎? 如果從終結器中使用對已完成的另一個對象的引用,會發生什麼?如果存在循環依賴關係,我不會看到垃圾收集器如何阻止您訪問可能已執行終結器的對象。 有沒有更好的替代方案來重寫finalize()來檢測