一段時間我試圖調試我的算法,在兩個數據庫之間同步數據。一切日常使用幾個月的工作確定,最近奇怪的事情開始發生如:C#windows服務的奇怪行爲,而> 90%的RAM使用
- 「DisableBuyButton」屬性有時設置爲true,而它被明確設置爲false,在配置文件中(我已加強通過算法的方式太多次發現一個奇怪的現象 - 什麼也沒發現,雖然在我的機器都這樣做也沒關係)
- 產品被分配到不同的類別高於預期
和許多類似的錯誤。
然後我想起在一個CodeCamp會議上有人說,在調試ASP.NET應用程序時,他們遇到了垃圾回收器處於某種「恐慌模式」的問題 - 這導致了許多意想不到的錯誤發生。
我檢查了可用內存量 - > 90%的使用量。我解決了這個問題,只需在虛擬機上添加1GB或更多的RAM即可 - 所有這些奇怪的事情都消失在一片空氣中。
現在的問題:這是甚麼可能是遠程可能的?
//編輯:關鍵部分,以確保只有一個實例在運行:
lock (this)
{
if (WorkStarted)
{
return;
}
else
{
WorkStarted = true;
}
}
我來自密蘇里州。給我看看。 –
難道你的代碼不是線程安全的嗎?可能不是,根據你的描述,但是如果你的代碼是多線程的並且編碼錯誤,那麼重載計算機的行爲就會很差。 –
實際上它是,但關鍵的部分 - 導致問題的只有一個線程,並與其他線程共享任何內容。另一個線程用於計劃和運行作業,但一次只能有一個線程完成這項工作。上面是確保只有一個實例正在運行的代碼。 – kubal5003