首页 > 解决方案 > 无法将字符串分配给 bool 导致异步任务

问题描述

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

这是一个代码:

public static async Task TaskArray(string urlTypeId, int ID, string l)
{
    async Task<bool> t1()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch { result = false; TestResult(ID, ErrorText(1), driver, urlTypeId, l); }

        return result;
    }

    async Task<bool> t2()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch { result = false; TestResult(ID, ErrorText(2), driver, urlTypeId, l); }

        return result;
    }

    async Task<bool> t3()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch (Exception e) { result = false; (ID, ErrorText(3), driver, urlTypeId, l); }

        return result;
    }


    //Creating ticket(s)
    {
        Task<bool> bee = t1();
        Task<bool> geo = t2();
        Task<bool> mag = t3();

        if (await bee == false && await geo == false && await mag == false)
        {
            // all results are false, creating 1 ticket

            CreateTicket(ID, GErrorText(4), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", "All");
        }
        else
        {
            //1 or 2 false result(s) create ticket for each false   
            var BooleanArray = new bool[] { await bee, await geo, await mag };
            var NamesArray = new string[] { "John", "George", "Nick" };

            foreach (Boolean value in BooleanArray)
            {
                if (value == false)
                {
                    CreateTicket(ID, ErrorText("string"), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", NamesArray[j]);
                }
            }
        }
    }

最后else我试图:

  1. 获取false结果数量;
  2. 识别三个(“bee”、“geo”、“mag”)中哪些返回错误结果;
  3. 转到foreach并创建一个 JIRA 票证,它将正确的 ErrorTexts 作为参数之一传递,它还将从NamesArray

我知道这太复杂了,所以我将在下面提供一个完整场景的示例:

  1. 如果所有三个作业都返回 value false,它会创建一张票(正如我之前已经提到的,这种情况下工作正常);
  2. 如果三个结果中有 2false个,则进入最后一个 else 并完成foreach两次(因为我们有 2 个错误结果)。在每次进入 foreach 时,传递给CreateTicket方法的参数不是静态的,而是动态的。例如:如果 "t1" 和 "t2" 返回 false 结果,则必须完成以下操作:

CreateTicket(ID, ErrorText(1), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", "John");

接着

CreateTicket(ID, ErrorText(2), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", "George");

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

先感谢您。

标签: c#task-parallel-library

解决方案


推荐阅读