嘿,我有一個我創建的應用程序的問題。基本上,在前幾周,我嘗試着手抓住所有第一次機會異常,將它們記錄到數據庫並繼續正常。現在,這裏是我不希望應用程序關閉的貼紙。我只想記錄錯誤並繼續,所以app.quit等不是我正在尋找的。如果它碰到了未處理的異常,我有一個單獨的錯誤處理程序。這很好,但它導致打開多個單詞的實例並導致我的系統因內存不足而崩潰。所以我的問題是沒有人有關於如何最好地實現這個想法或關於如何解決這個問題的任何建議?第一次機會異常錯誤處理導致與多個實例的字內存不足
和代碼是非常簡單的。
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.FirstChanceException += LogException;
public async Task LogException(string exception)
{
var word = new Microsoft.Office.Interop.Word.Application();
var winVer = Environment.OSVersion.ToString();
CiteRightException exceptionData = new CiteRightException();
exceptionData.stackTrace = exception;
exceptionData.windowsVersion = word.Version;
exceptionData.windowsVersion = winVer;
var content = new StringContent(Json.Encode(exceptionData),
Encoding.UTF8, "application/json");
await httpClient.PostAsync("/api/logException", content);
}
我一直在使用一個.quit方法試了(沒有停止額外的情況下打開),並認爲它可能是一個線程問題currentThread.join(),但仍然是新的實例被創建。如果我註釋掉第一個輪廓線,一切正常,所以它100%來自這裏。
非常感謝您提前致謝
你有沒有試過從'LogException'方法中退訂它的方法start並在最後一行再次訂閱? –
這個實現的TAP模式的原因/目的是什麼? – DaniDev
「我只想記錄錯誤並繼續」Continue大概意味着您的應用程序(?)只是爲了檢索版本而實例化Word。您可以嘗試將它作爲常量參數傳遞,假設您的應用程序已經與Word進行交互。 – DaniDev