有人可以解释,如果await和ContinueWith是在下面的例子中同义与否.我正在尝试第一次使用TPL并且已经阅读了所有文档,但是不明白其中的区别.
等待:
String webText = await getWebPage(uri);
await parseData(webText);
Run Code Online (Sandbox Code Playgroud)
继续:
Task<String> webText = new Task<String>(() => getWebPage(uri));
Task continue = webText.ContinueWith((task) => parseData(task.Result));
webText.Start();
continue.Wait();
Run Code Online (Sandbox Code Playgroud)
在特定情况下,一个优先于另一个吗?
我试图从同步方法运行异步方法.但我不能等待的异步,因为我在一个同步方法方法.我不能理解TPL,因为这是我第一次使用它.
private void GetAllData()
{
GetData1()
GetData2()
GetData3()
}
Run Code Online (Sandbox Code Playgroud)
每个方法都需要先前的方法来完成,因为第一个方法的数据用于第二个方法.
但是,在每个方法中我想要启动多个Task操作以加快性能.然后我想等他们所有人完成.
GetData1看起来像这样
internal static void GetData1 ()
{
const int CONCURRENCY_LEVEL = 15;
List<Task<Data>> dataTasks = new List<Task<Data>>();
for (int item = 0; item < TotalItems; item++)
{
dataTasks.Add(MyAyncMethod(State[item]));
}
int taskIndex = 0;
//Schedule tasks to concurency level (or all)
List<Task<Data>> runningTasks = new List<Task<Data>>();
while (taskIndex < CONCURRENCY_LEVEL && taskIndex < dataTasks.Count)
{
runningTasks.Add(dataTasks[taskIndex]);
taskIndex++;
}
//Start tasks and wait for them …Run Code Online (Sandbox Code Playgroud) 我使用的XIRR公式如下:
=XIRR(E$11:E17,B$11:B17)
Run Code Online (Sandbox Code Playgroud)
但需要在值范围和日期中添加一个额外的非相邻单元格.
我的第一次尝试:
=XIRR((E$11:E17,H17),(B$11:B17,B17))
Run Code Online (Sandbox Code Playgroud)
结果 #VALUE
我试图使用CHOOSE功能进行如下操作:
=XIRR(CHOOSE({1,2},E$11:E17,H17),CHOOSE({1,2},B$11:B17,B17))
Run Code Online (Sandbox Code Playgroud)
但这并不能产生正确的结果.
我无法弄清楚如何在范围的末尾添加一个单元格.以下确实可以给出正确的结果但不适合我,因为我需要使用范围和单个细胞,而不是所有单个细胞
=XIRR(CHOOSE({1,2,3},E11,E12,H13),CHOOSE({1,2,3},B11,B12,B13))
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我正在尝试将数据添加到我的SQL数据库中,当我输入以下代码时:
INSERT INTO EMPLOYEES
VALUES('100','STEVEN','King','sking@yahoo.com','PSEUDO',
to_date('17-JAN-87','dd-mm-yy'),'AD_VP',24000,0.45,90);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR at line 1:
ORA-00001: unique constraint (ODEHat01.SYS_C00292486) Violated
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么,因为当我描述我的表(desc employees;)时,它表明我有10个字段,我试图将数据输入到10个字段中.非常感谢任何帮助,所以我可以将数据输入我的员工表.谢谢.
所以我正在制作一个Rock Paper Scissor游戏,我对它做了一些调整,包括生活和其他事情.现在我陷入了switch语句.我的if语句工作正常:
private void Result_TextChanged(object sender, EventArgs e)
{
if (playerscore == 1 || pcscore == 1)
{
PlayerLife.Image = Properties.Resources.Five;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何将其转换为switch语句?
private void Result_TextChanged(object sender, EventArgs e)
{
switch (playerscore || pcscore)
{
case 1:
PlayerLife.Image = Properties.Resources.Five;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎没有用.
我正在写windows store app(8.1),我有样本(可能是win 8.0):
private WriteableBitmap WriteableBitmap;
…
WriteableBitmap = new WriteableBitmap(500,500);
…
using (Stream stream = WriteableBitmap.PixelBuffer.AsStream())
{
…
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了新的win 8.1项目并尝试以同样的方式完成,但是当我到达时:
using (Stream stream = WriteableBitmap.PixelBuffer.AsStream())
Run Code Online (Sandbox Code Playgroud)
我的项目不认识*.AsStream()方法,谁能告诉我为什么?
c# ×4
.net ×1
async-await ×1
asynchronous ×1
buffer ×1
excel ×1
if-statement ×1
oracle ×1
sql ×1
task ×1
windows-8 ×1
xirr ×1