C# 无法将字符串分配给异步任务中的bool结果

C# 无法将字符串分配给异步任务中的bool结果,c#,task-parallel-library,C#,Task Parallel Library,我有这样一个场景: 我有一个异步任务方法,在这个方法中包括3个作业,它们都返回布尔结果(true/false)。此代码的主要目标是,如果所有三个作业都返回false值(此部分工作得很好),则创建一个JIRA问题,但如果三个作业中有一个或两个false结果,则应创建两个独立的JIRA问题(如果有两个错误) 这里有一个代码: 公共静态异步任务TaskArray(字符串urlTypeId、int-ID、字符串l) { 异步任务t1() { 布尔结果=真; 尝试 { FindElement(driver

我有这样一个场景:
我有一个异步任务方法,在这个方法中包括3个作业,它们都返回布尔结果(true/false)。此代码的主要目标是,如果所有三个作业都返回
false
值(此部分工作得很好),则创建一个JIRA问题,但如果三个作业中有一个或两个
false
结果,则应创建两个独立的JIRA问题(如果有两个错误)

这里有一个代码:

公共静态异步任务TaskArray(字符串urlTypeId、int-ID、字符串l)
{
异步任务t1()
{
布尔结果=真;
尝试
{
FindElement(driver,SelectorTypes.ByXpath,“xpath”);
}
catch{result=false;TestResult(ID,ErrorText(1),driver,urlTypeId,l);}
返回结果;
}
异步任务t2()
{
布尔结果=真;
尝试
{
FindElement(driver,SelectorTypes.ByXpath,“xpath”);
}
catch{result=false;TestResult(ID,ErrorText(2),driver,urlTypeId,l);}
返回结果;
}
异步任务t3()
{
布尔结果=真;
尝试
{
FindElement(driver,SelectorTypes.ByXpath,“xpath”);
}
catch(异常e){result=false;(ID,ErrorText(3),driver,urlTypeId,l);}
返回结果;
}
//正在创建票证
{
任务bee=t1();
任务geo=t2();
任务mag=t3();
if(wait-bee==false&&wait-geo==false&&wait-mag==false)
{
//所有结果均为false,创建1张票证
CreateTicket(ID,GErrorText(4),驱动程序,urlTypeId,l,“主”、“桌面”、“网站”、“SB”、“全部”);
}
其他的
{
//1或2个错误结果为每个错误创建票证
var BooleanArray=new bool[]{wait bee,wait geo,wait mag};
var NamesArray=新字符串[]{“John”、“George”、“Nick”};
foreach(布尔数组中的布尔值)
{
如果(值==false)
{
CreateTicket(ID,ErrorText(“字符串”),驱动程序,urlTypeId,l,“主”,“桌面”,“网站”,“SB”,名称数组[j]);
}
}
}
}
在最后的
else
中,我试图:

  • 获取
    false
    结果的数量
  • 确定三个结果中哪一个返回错误结果(“bee”、“geo”、“mag”)
  • 转到
    foreach
    并创建一个JIRA票证,该票证将传递正确的错误文本作为参数之一,并且它将从
    NamesArray
  • 我知道这太复杂了,所以我将在下面提供一个完整场景的示例:

  • 如果所有三个作业都返回值
    false
    ,它将创建一个票证(正如我前面提到的,这种情况很好)
  • 如果三个结果中有两个
    false
    结果,它将进入最后一个else并完成
    foreach
    两次(因为我们有两个假结果)。在每次进入foreach时,传递给
    CreateTicket
    方法的参数不是静态的,而是动态的。例如:If“t1”和“t2”返回假结果,必须完成以下操作:
  • CreateTicket(ID,ErrorText(1),驱动程序,urlTypeId,l,“主”,“桌面”,“网站”,“SB”,“John”)

    然后

    CreateTicket(ID,ErrorText(2),驱动程序,urlTypeId,l,“Main”, “桌面”、“网站”、“SB”、“乔治”)

    我希望我能在这里找到一个帮助或提示,我已经尝试解决这个问题几周了,但我仍然找不到一个合适的方法来解决它


    提前谢谢你。

    var results=wait Task.WhenAll(bee,geo,mag);
    if(!(results[0]| | | | results[1]| | | results[2]){create single ticket否则{if(!results[0]){create ticket John if(!results[1]){create ticket ge乔治}if(!results[2]){create ticket Nick}
    var=new name=List()!(等待蜜蜂)姓名。添加(“约翰”);如果(!(等待地理))姓名。添加(“乔治”);…
    ?如果要将字符串与布尔结果相关联,最好将它们组合到一个数据结构中,但即使使用现有的结构,如果要切换到
    for
    循环,也可以直接使用索引。您可以装配foreach循环来提供索引,但它看起来很笨拙,但至少不复杂未知的解决方案是
    int index=0;foreach(…){…code here;index++;}
    。我仍然不知道哪里有错误或问题。您描述了代码,但没有问题。此外,我不知道如何获得foreach中使用的j值。