我需要爲我的應用程序創建一個單獨的線程來記錄一些事情,並建議我使用任務。在任務中使用操作 - 不知道它是如何工作的
我似乎沒有這個權利,因爲我沒有完全理解任務(我猜)。
以下是我有:
public static void LogException(string message, Exception ex)
{
Action action= delegate() { logException(message, ex); };
new Task(action);
}
public static void logException(string message, Exception ex)
{
var stackTrace = new StackTrace();
var origin = stackTrace.GetFrame(1).GetMethod().Name;
var originclass = stackTrace.GetFrame(1).GetMethod().ReflectedType.Name;
var neworigin = string.Format("{0}.{1}", originclass, origin);
message += Environment.NewLine + Environment.NewLine + GetFullExceptionMessage(ex);
if (string.IsNullOrEmpty(message)) message = "No message given";
//var exceptions = GetAllErrMessages(ex);
//message = exceptions.Aggregate(message, (current, exception) => current + Environment.NewLine + exception);
EventLogging.LogEvent(neworigin, message, EventLogEntryType.Error, 9999);
EmailMessage(neworigin, message, EventLogEntryType.Error);
}
我在做什麼錯?我沒有得到任何錯誤,但再次,我沒有得到任何日誌。
謝謝!
太棒了!那工作。另外,關於開銷的提及,事件日誌和/或電子郵件是不是更多的開銷?我怎麼會知道?謝謝您的幫助! – ErocM 2012-08-15 17:21:45
@ErocM好吧,我知道LogEvent方法只是將字符串存儲在一個列表中,或者它創建它自己的線程來在後臺執行日誌記錄。此外,如果它只是寫一個文件,感謝緩衝/緩存/等。這並不總是那麼緩慢。要真正知道,你會想要淘汰你可信賴的'StopWatch',看看哪些花費更長的時間(平均來說,需要大量的迭代)才能運行。 – Servy 2012-08-15 17:40:22
這就是我所做的。再次感謝您的幫助! – ErocM 2012-08-15 17:58:19