小编Per*_*ine的帖子

针对特定异常的单元测试异步方法

有没有人有一个如何在Windows 8 Metro应用程序中单元测试异步方法的示例,以确保它抛出所需的异常?

给定一个具有异步方法的类

public static class AsyncMathsStatic
{
    private const int DELAY = 500;

    public static async Task<int> Divide(int A, int B)
    {
        await Task.Delay(DELAY);
        if (B == 0)
            throw new DivideByZeroException();
        else
            return A / B;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想使用新的Async.ExpectsException构造编写测试方法.我试过了 :-

[TestMethod]
public void DivideTest1()
{
    Assert.ThrowsException<DivideByZeroException>(async () => { int Result = await AsyncMathsStatic.Divide(4, 0); });
}
Run Code Online (Sandbox Code Playgroud)

但是当然测试不会等待异步方法完成,因此导致测试失败,但没有抛出异常.

c# unit-testing async-await windows-8

14
推荐指数
3
解决办法
9378
查看次数

WPF中的DispatcherPriority

是否存在与WPF应用程序相关的每个DispatcherPriority枚举值的确切含义的任何文档.

特别是Background/ ContextIdle/ 之间有什么实际区别ApplicationIdle吗?我发现自己在代码的各个部分使用了每个部分,并希望标准化一个值.

典型用法是在数据绑定的TreeView控件中.当设置一个项目时(在ViewModel中),我想首先展开它的所有父项(再次在ViewModel中),然后在实际设置selected属性之前等待它们完全呈现(在View中).

c# wpf

9
推荐指数
1
解决办法
685
查看次数

将视频从安全的azure blob流式传输到WPF

有没有人知道从安全的azure blob(通过https)将.mp4视频流式传输到WPF应用程序的方法.

我按照以下方式生成uri ...

public Uri GetSecureUriForBlob(CloudBlobContainer container, string blobName)
{
    var blockBlob = container.GetBlockBlobReference(blobName);
    var beforeOffset = new DateTimeOffset(DateTime.UtcNow.AddMinutes(-5));
    var afterOffset = new DateTimeOffset(DateTime.UtcNow.AddHours(1));

    var builder = new UriBuilder(blockBlob.Uri)
    {
        Query = blockBlob.GetSharedAccessSignature(
            new SharedAccessBlobPolicy
            {
                Permissions = SharedAccessBlobPermissions.Read,
                SharedAccessStartTime = beforeOffset,
                SharedAccessExpiryTime = afterOffset
            }).TrimStart('?')
    };

    return builder.Uri;
}
Run Code Online (Sandbox Code Playgroud)

我已检查服务版本是否至少设置为"2013-08-15",并且blob项目具有正确的内容类型集.

我知道uri的格式是正确的,因为我可以将其粘贴到浏览器中,并在Windows 8商店应用程序中使用它,并且视频流正确.

但是,当我为WPF MediaElement分配相同的uri时,我在MediaPlayer.Open()的内部工作中得到了一个N​​ullReferenceException.

wpf azure azure-storage-blobs

7
推荐指数
1
解决办法
533
查看次数

如何使"旧式"异步方法等待

如果我有一个带回调的异步方法

MyMethodAsync( <Input Parameters ...>, Callback);
Run Code Online (Sandbox Code Playgroud)

我怎么能让它等待?

[此方法适用于Windows Phone 7,但同样适用于任何类似的c#构造]

DNSEndpoint Endpoint = ...
NameResolutionCallback Callback = (nrr) => { ... }
DeviceNetworkInformation.ResolveHostNameAsync(Enpoint, Callback, null);
Run Code Online (Sandbox Code Playgroud)

我想在这个调用周围放一个等待的包装器,所以我等待回调完成后再继续下一个命令.

c# async-await

6
推荐指数
1
解决办法
1322
查看次数

Windows 8/RT/Store TextBox - 在每次击键后更新文本绑定

有没有办法在每次击键后更新文本绑定?

我的WPF自定义TextBox使用KeyUp事件

private void MyTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    BindingExpression BE = GetBindingExpression(TextBox.TextProperty);
    if (BE != null)
        BE.UpdateSource();
}
Run Code Online (Sandbox Code Playgroud)

BindingExpressionWindows 8/RT/Store中不存在.

data-binding wpf mvvm windows-store-apps

2
推荐指数
1
解决办法
2054
查看次数