我不确定这是否可能,或者是否有更好的方法可以做到这一点,但我真的想显示此操作的进度。我对C#开发还很陌生,所以任何建议都会非常感激。
这是我到目前为止所拥有的。我希望相应地更新我的进度条:
async void EventLogs(string exportPath, string log)
{
await Task.Run(() =>
{
try
{
EventLogSession eventlog = new EventLogSession();
eventlog.ExportLogAndMessages(log,
PathType.LogName,
"*",
exportPath + " " + log + ".evtx",
false,
CultureInfo.CurrentCulture
);
}
catch (UnauthorizedAccessException)
{
}
catch (EventLogNotFoundException)
{
}
catch (EventLogException)
{
}
});
}
}
答案 0 :(得分:2)
异步并通过IProgress<T>
等待支持进度指示,如Task-based Asynchronous Pattern documentation中所述。请注意,Progress<T>
会为您处理UI调度,因此不必弄乱Dispatcher
。
不幸的是,ExportLogAndMessages
不支持进度报告。因此,如果您需要一些有意义的进展,则需要弄清楚如何对事件日志消息进行分区。然后,您可以为分区的不同段调用该方法,在中间调用之间调用IProgress<T>.Report
。
答案 1 :(得分:0)
我可以想到两个选择:
编辑:
如果您不确定进度计算,只需将其与IsIndeterminate属性一起使用。
HIH
爱丽儿