当使用Q#进行编码时,使用以下代码片段,我得到一个汇总异常错误(似乎发生了一个或多个错误)。
此特定代码段有什么问题,Q#文档的哪些部分与该问题有关?
代码段:
// Try initial values
Result[] initials = new Result[] { Result.Zero, Result.One };
foreach (Result initial in initials)
{
BellTest.Run(sim, 1000, initial).Wait();
var res = BellTest.Run(sim, 1000, initial).Result;
var (numZeros, numOnes, agree) = res;
System.Console.WriteLine(
$"Init:{initial,-4} 0s={numZeros,-4} 1s={numOnes,-4} agree={agree,-4}");
}
答案 0 :(得分:3)
每次对Q#
操作的调用都是异步的,因为在实际硬件上的执行也将是异步的,因此,每次调用Run
时,必须等待执行完成才能执行另一个量子操作。等待异步Task
完成的方式有多种,包括使用await
关键字,Wait()
或检索Task
的{{3}}。
在这种情况下,您两次调用BellTest.Run
,而第二个则不等待第一个完成。如果您将Wait()
添加到第一个Run
中,则Exeption将消失,例如:
BellTest.Run(sim, 1000, initial).Wait();
答案 1 :(得分:0)
看看你的innerException 问题是空引用异常。 调试您的代码,并确保所有内容都不为空。
BellTest,sim,intinial或BellTest.Run(sim,1000,ininial)