我在構造函數中創建了一個計時器,並且希望使該計時器成爲構造類的成員。由於定時器沒有被任何其他類成員引用,它被編譯成一個變量,這個變量對構造函數是本地的,因此垃圾被收集並被殺死。防止這種情況發生的如何在構造函數中創建一個本地構造函數變量
一種方法是做一個虛擬的參考,像
type MyClass() as o =
let timer = new Timer((fun _ -> o.Tick()), null, 0, 1000)
member private o.DummyRef = timer
member o.Tick() = printfn "Tick!"
是否有強迫timer
到成爲一名成員的更合適的方法?
Thx! 'member'是我尋找的神奇詞彙。我正在考慮'val timer:Timer'語法,但是我必須使用[],使其變爲可變的並將其分配在ctor do塊中。 –