Con*_*ngo 3 wpf xaml asynchronous mvvm-light async-await
我想知道是否有一些技术或方法来检测WPF应用程序中没有使用async/await的调用.
我问的原因是我正在处理的WPF应用程序在屏幕更新上是口吃和停顿,我似乎无法追踪阻止GUI线程的调用的来源.
我正在使用VS2012和VS2013与MVVM设计模式.
这不会直接回答您的问题,但这将有助于识别调度程序线程何时重载,以下代码使用DispatcherInactive事件周围的事件处理程序来计算调度程序线程已经过载(阻塞)的工作时间:
var maxThreshold = TimeSpan.FromMilliseconds(750);
var previous = DateTime.Now;
Application.Current.MainWindow
.Dispatcher.Hooks.DispatcherInactive += (sender, eventArgs) =>
{
var current = DateTime.Now;
var delta = current - previous;
previous = current;
if (delta > maxThreshold)
{
Debug.WriteLine("UI Freeze = {0} ms", delta.TotalMilliseconds);
}
};
Run Code Online (Sandbox Code Playgroud)
我建议这只用于调试模式,所以它将被包装在一个#if DEBUG块中.你不希望它在生产中运行.
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |