我有以下四个测试,当我运行它时,最后一个测试挂起,我的问题是为什么会发生这种情况:
[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) 在执行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)
我希望将这两个单词与命名的捕获匹配,然后在执行替换时使用(命名)捕获.
目前解决方案由SVN管理,我想切换到git.当我做Tools-> Options-> Source Control-> Plug-in Selection并更改插件时,我得到这个对话框:
我再也没有过去,当我再次打开.sln时,它仍然是SVN.
我有一种感觉,我过去曾多次这样做过.
附加信息:文件已经由git管理,我只是使用git扩展克隆它,它是np.问题出在VS.
我有一个这样的表达式:
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
?
我希望有一个 File.ExistsAsync()
我有:
bool exists = await Task.Run(() => File.Exists(fileName));
Run Code Online (Sandbox Code Playgroud)
使用线程就像反模式一样.有更干净的方式吗?
我需要这样做:
if(!fooMock.HasSetupFor(x => x.Bar))
{
fooMock.Setup(...);
}
Run Code Online (Sandbox Code Playgroud)
以上是伪代码,它相当于HasSetupFor
我正在寻找.这可能吗?
在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) 有没有办法从当前不在使用中但在解决方案中引用的类获取扩展方法的intellisense.在类中第一次使用扩展方法时,能够只键入并且不必添加使用将是非常方便的.
背景:我在一个设置中有一个大的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# ×7
async-await ×2
wpf ×2
ankhsvn ×1
bounding-box ×1
deadlock ×1
file-exists ×1
flowdocument ×1
geometry ×1
git ×1
intellisense ×1
moq ×1
nunit ×1
performance ×1
regex ×1
replace ×1
resharper ×1
richtextbox ×1
svn ×1
task ×1