小编Joh*_*son的帖子

await工作但调用task.Result挂起/死锁

我有以下四个测试,当我运行它时,最后一个测试挂起,我的问题是为什么会发生这种情况:

[Test]
public void CheckOnceResultTest()
{
    Assert.IsTrue(CheckStatus().Result);
}

[Test]
public async void CheckOnceAwaitTest()
{
    Assert.IsTrue(await CheckStatus());
}

[Test]
public async void CheckStatusTwiceAwaitTest()
{
    Assert.IsTrue(await CheckStatus());
    Assert.IsTrue(await CheckStatus());
}

[Test]
public async void CheckStatusTwiceResultTest()
{
    Assert.IsTrue(CheckStatus().Result); // This hangs
    Assert.IsTrue(await CheckStatus());
}

private async Task<bool> CheckStatus()
{
    var restClient = new RestClient(@"https://api.test.nordnet.se/next/1");
    Task<IRestResponse<DummyServiceStatus>> restResponse = restClient.ExecuteTaskAsync<DummyServiceStatus>(new RestRequest(Method.GET));
    IRestResponse<DummyServiceStatus> response = await restResponse;
    return response.Data.SystemRunning;
}
Run Code Online (Sandbox Code Playgroud)

我将此扩展方法用于restsharp RestClient:

public static class RestClientExt
{
    public static Task<IRestResponse<T>> ExecuteTaskAsync<T>(this RestClient client, IRestRequest …
Run Code Online (Sandbox Code Playgroud)

c# nunit deadlock task async-await

118
推荐指数
4
解决办法
6万
查看次数

执行Regex.Replace()时如何使用命名组

在执行Regex.Replace时如何使用命名捕获?我已经做到了这一点,它做了我想要的但不是我想要的方式:

[TestCase("First Second", "Second First")]
public void NumberedReplaceTest(string input, string expected)
{
    Regex regex = new Regex("(?<firstMatch>First) (?<secondMatch>Second)");
    Assert.IsTrue(regex.IsMatch(input));
    string replace = regex.Replace(input, "$2 $1");
    Assert.AreEqual(expected, replace);
}
Run Code Online (Sandbox Code Playgroud)

我希望将这两个单词与命名的捕获匹配,然后在执行替换时使用(命名)捕获.

c# regex replace

44
推荐指数
2
解决办法
3万
查看次数

在Visual Studio中更改源代码管理插件

目前解决方案由SVN管理,我想切换到git.当我做Tools-> Options-> Source Control-> Plug-in Selection并更改插件时,我得到这个对话框:

在此输入图像描述

我再也没有过去,当我再次打开.sln时,它仍然是SVN.

我有一种感觉,我过去曾多次这样做过.

附加信息:文件已经由git管理,我只是使用git扩展克隆它,它是np.问题出在VS.

svn git ankhsvn visual-studio-2012

37
推荐指数
2
解决办法
2万
查看次数

在表达式中保证顺序

我有一个这样的表达式:

EqualByComparer comparer;
if (ListEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
    EnumerableEqualByComparer.TryGetOrCreate(x, y, out comparer))
{
    return comparer.Equals(x, y, compareItem, settings, referencePairs);
}
Run Code Online (Sandbox Code Playgroud)

ListEqualByComparer.TryGetOrCreate始终被调用之前EnumerableEqualByComparer.TryGetOrCreate

c# operator-precedence

17
推荐指数
1
解决办法
1689
查看次数

找到路径中的边界框

说我们有这条道路:

在此输入图像描述

我们如何找到适合里面的盒子的边界?

是的我知道路径可以是任意复杂的,不能关闭.仍然对如何解决这个问题的建议感到好奇.

wpf geometry bounding-box

12
推荐指数
1
解决办法
506
查看次数

检查文件是否存在异步?

我希望有一个 File.ExistsAsync()

我有:

bool exists = await Task.Run(() => File.Exists(fileName));
Run Code Online (Sandbox Code Playgroud)

使用线程就像反模式一样.有更干净的方式吗?

c# file-exists async-await

10
推荐指数
2
解决办法
7880
查看次数

有没有办法检查模拟是否已为成员设置?

我需要这样做:

if(!fooMock.HasSetupFor(x => x.Bar))
{
    fooMock.Setup(...);
}
Run Code Online (Sandbox Code Playgroud)

以上是伪代码,它相当于HasSetupFor我正在寻找.这可能吗?

c# moq

10
推荐指数
1
解决办法
127
查看次数

缓慢格式化RichTextBox

在rtb中格式化文本时,我的性能很差:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal">
        <Button Click="ApplyFormatClick">ApplyFormat</Button>
        <TextBlock x:Name="Time"/>
    </StackPanel>

    <RichTextBox x:Name="Rtb" Grid.Row="1">
        <RichTextBox.Document>
            <FlowDocument>
                <Paragraph>
                    <Run>
                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt …
Run Code Online (Sandbox Code Playgroud)

wpf performance richtextbox flowdocument

9
推荐指数
2
解决办法
3521
查看次数

智能感知扩展方法?

有没有办法从当前不在使用中但在解决方案中引用的类获取扩展方法的intellisense.在类中第一次使用扩展方法时,能够只键入并且不必添加使用将是非常方便的.

c# resharper intellisense extension-methods visual-studio

8
推荐指数
1
解决办法
1643
查看次数

应用程序设置是否有最大大小?

背景:我在一个设置中有一个大的xml字符串,但无法反序列化.XmlSerializer抱怨它不是有效的xml.在Project> Settings中查看字符串时,它看起来被截断了.

如果应用程序设置的大小有限但我没有找到任何内容,我google了.

然后我尝试使用以下代码生成的dummydata重现它:

[Test]
public void DumpDummyData()
{
    int n = 500;
    var s = new string('a', 100);
    using (FileStream stream = File.OpenWrite(@"C:\Temp\"+n+".txt"))
    {
        using (var writer = new StreamWriter(stream))
        {

            for (int i = 0; i < n; i++)
            {
                writer.WriteLine( i +" " +s);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当在设置中粘贴文件的内容时,在行310处截断该字符串.在两个不同的项目中尝试过.

我的问题是应用设置大小的限制是多少?

c# application-settings

8
推荐指数
1
解决办法
4747
查看次数