gpt4 book ai didi

silverlight - 使用 Deployment.Current.Dispatcher.BeginInvoke 进行单元测试

转载 作者:行者123 更新时间:2023-12-01 13:06:05 24 4
gpt4 key购买 nike

我有一个 Windows Phone 7 Silverlight 应用程序,我正在尝试对其进行单元测试。我的测试失败并出现以下错误:

System.DivideByZeroException : Attempted to divide by zero.

在下面一行:

Deployment.Current.Dispatcher.BeginInvoke(() => RaisePropertyChanged("Lat"));

我认为这是因为没有 UI 线程。我是否需要抽象化 BeginInvoke 调用以便它们可以在我的测试中被模拟?

更新:

我最终进行了抽象,这样我就可以在单元测试中进行模拟。效果很好。你怎么看?

public class UiDispatcher : IUiDispatcher
{
public void InvokeOnUiThread(Action action)
{
Deployment.Current.Dispatcher.BeginInvoke(action);
}
}

最佳答案

你明白了。您可能还想添加一个 Dispatcher.CheckAccess() 条件,如果您不需要它,它可以使您免于调用:

public void InvokeOnUiThread(Action action) 
{
if(Deployment.Current.Dispatcher.CheckAccess())
{
action();
} else {
Deployment.Current.Dispatcher.BeginInvoke(action);
}
}

关于silverlight - 使用 Deployment.Current.Dispatcher.BeginInvoke 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3075935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com