我有以下代码(简化用于发布目的).
public class SomeDataObject
{
public delegate void ReadyEventHandler;
public delegate void ErrorEventHandler;
public event ReadyEventHandler Ready;
public event ErrorEventHandler Error;
...
}
pubic class ConsumerClass
{
private SomeDataObject dataObject;
private Task<List<string>> GetStrings()
{
List<string> results = new List<string>();
var tcs = new TaskCompletionSource<List<string>>();
SomeDataObject.ReadyEventHandler ReadyHandler = null;
SomeDataObject.ErrorEventHandler ErrorHandler = null;
ReadyHandler += () =>
{
for (int i =0; i < dataObject.ItemCount; i++)
results.Add(dataObject[i].ToString());
tcs.TrySetResult(results);
}
ErrorHandler += ()
{
tcs.TrySetException(new Exception("oops!");
}
dataObject.Ready += ReadyHandler;
dataObject.Error += …
Run Code Online (Sandbox Code Playgroud) 使用 MahApps.Metro AnimatedSingleRowTabControl 时如何更改选项卡的字体大小。
使用普通 TabControl 时,我的主题 TabItem(基于 MetroTabItem)覆盖字体大小,但这不适用于动画单行选项卡控件。我尝试在 XAML 中的控件上设置 fontsize 属性,但这也不起作用。
问候艾伦
我正在使用 MVVM Light 在两个 ViewModel 之间发送消息。在接收 VM 中,我正在尝试以下操作
Messenger.Default.Register<NotificationMessage>(this, async (msg) => {
await HandleMessage(msg);
});
private async Task HandleMessage(NoficationMessage message)
{
... code using await
}
Run Code Online (Sandbox Code Playgroud)
第一次发送消息(通过单击按钮)时,异步方法运行。下次发送消息时什么也不会发生 - 方法不会被调用(通过断点检查)。
以这种方式在 Register 方法上允许异步吗?
什么是解决方法?
我试图对在IObservable上使用Wait()方法的方法进行单元测试,但是我的测试永远不会完成 - Wait永远不会完成.我的测试包含以下内容:
var scheduler = new TestScheduler();
var input1 = scheduler.CreateColdObservable<List<string>>(
new Recorded<Notification<List<string>>>(100, Notification.CreateOnNext(new List<string> { "John", "Harry" })),
new Recorded<Notification<List<string>>>(200, Notification.CreateOnCompleted<List<string>>())
);
Run Code Online (Sandbox Code Playgroud)
我正在使用Moq通过返回input1来设置我的方法的响应.例如
myObj.Setup(f => f.GetStrings()).Returns(input1);
Run Code Online (Sandbox Code Playgroud)
关于myObj的细节实际上并不重要.我启动调度程序并调用包含Wait的方法(例如我调用的方法中的某个地方)
var results = myObj.GetStrings().Wait();
Run Code Online (Sandbox Code Playgroud)
但这永远不会回来.我怀疑我使用调度程序错误,但我不确定.
关心艾伦