我正在编写一个基于await/sleep范例的网络绑定应用程序.
有时会发生连接错误,根据我的经验,等待一段时间再重试操作是值得的.
问题是,如果我在await/async中使用Thread.Sleep或类似的阻塞操作,它会阻止调用程序线程中的所有活动.
我应该用什么来替换Thread.Sleep(10000)以获得相同的效果
await Thread.SleepAsync(10000)
Run Code Online (Sandbox Code Playgroud)
?
UPDATE
我更喜欢一个没有创建任何额外线程的答案
我想从Windows命令行(而不是电源shell)快速搜索给出其名称或部分名称的文件.这类似于打开资源管理器并使用顶部的搜索框.
注意:dir可以基于字符串模板进行搜索,但不会在子目录中进行搜索.
注2:findstr可用于在文件内搜索令牌并具有递归标志; 有趣的是,可以轻松发现更复杂的发现......
我刚刚遇到了我的类的反编译类文件:
我的课
while ((line = reader.readLine()) != null) {
System.out.println("line: " + line);
if (i == 0) {
colArr = line.split(Pattern.quote("|"));
} else {
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
该while环路已更改为一个for在类文件中循环:
反编译MyClass
for (String[] colArr = null; (line = reader.readLine()) != null; ++i) {
System.out.println("line: " + line);
if (i == 0) {
colArr = line.split(Pattern.quote("|"));
} else {
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个循环被改为for?我认为它可能是编译器进行代码优化的另一种方式,我可能是错的.我只是想知道它是否,for循环在while循环或其他循环中提供了什么优势?
这种代码优化的类别是什么?
根据文件
assertEquals()断言两个对象是相等的.
assertSame()断言两个对象引用同一个对象.
所以我期待如果我有一个类似下面的课程
class SomeClass {}
Run Code Online (Sandbox Code Playgroud)
然后
SomeClass someClass1= new SomeClass();
SomeClass someClass2= new SomeClass();
assertSame(someClass1,someClass2); // fail
assertEquals(someClass1,someClass2); // fail
Run Code Online (Sandbox Code Playgroud)
assertEquals应该传递,assertSame应该失败,因为两个类的值相等但它们具有不同的引用位置.
由于我在两种情况下都失败了,那么我的问题是这两者之间有什么区别?
java ×3
.net ×1
assert ×1
async-await ×1
c# ×1
cmd ×1
command-line ×1
debugging ×1
equals ×1
junit ×1
loops ×1
optimization ×1
windows ×1