在C#中的异步函数中填充字符串数组 - c#

我有一个String [] parameters,它通过调用另一个函数GetParameter从URL抓取参数来填充其值。我想我需要将另一个函数转换为异步工作,以确保在触发其余初始函数之前(首先要完成的方法中的其他部分)首先获取参数。

    private static string GetParameter(string url, stringParamName)
    {
        var indexQuery = url.IndexOf("?");
        var indexParam = url.IndexOf(paramName);

        return (indexQuery != -1 && indexParam != -1) ? HttpUtility.ParseQueryString(url).Get(paramName) : throw new Exception ("Missing query/parameter.");
    }

    private static void MainFunction()
    {
        var param1 = "test1";
        var param2 = "test2";
        var uncleanedUrl = "https://google.com/?test1=12345&test2=678901";
        String[] parameters = { GetParameter(uncleanedUrl, param1), GetParameter(uncleanedUrl, param2) }; //Should be populated like {12345, 67890}
        var validValues = new List<string>();
        int[] expectedParamLength = { 5, 6 };
        const string insertString =
            "USE [MY DB] GO" +
            "INSERT INTO [...]" +
            "([Column 1], [Column 2], [Column 1+2])" +
            "VALUES" +
            "(@Column1, @Column2, @Column3) GO";
        var connectionString = ""; //Connection string here

        for (int i = 0; i < parameters.Length; i++)
        {
            var validValue = int.TryParse(parameters[i].Trim(), out int number); // Returns true if the onversion to an int was succesful
            if (validValue && parameters[i].Length == expectedParamLength[i])
            {
                validValues.Add(parameters[i].Trim());
            }
        }

        if (validValues.Count == parameters.Length) //is number of validated values same as number of parameters we checked
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand insertCommand = new SqlCommand(insertString))
                {
                    using (SqlDataAdapter adapter = new SqlDataAdapter())
                    {
                        insertCommand.Parameters.AddWithValue("@Column1", validValues[0]);
                        insertCommand.Parameters.AddWithValue("@Column2", validValues[1]);
                        insertCommand.Parameters.AddWithVAlue("@Column3", validValues[0] + validValues[1]);
                        connection.Open();
                        adapter.InsertCommand.ExecuteNonQuery();
                    }
                }
            }
        }
    }

我正在尝试与this article一起执行任务,但是不确定如何从任务中返回字符串HttpUtility.ParseQueryString(url).Get(paramName)

private static Task<string> GetParameter(string url, string paramName)
        {
            var returnedParameter = new TaskCompletionSource<string>();
            GetParameter(url, paramName, success =>
            {
                returnedParameter.SetResult(success);
            });
            return HttpUtility.ParseQueryString(url).Get(paramName);
        }

参考方案

异步是粘性的。您不能只让一部分异步-如果您想使用返回Task<string>的方法,则需要异步并await结果。而且您不想成为async void,因为那是Bad™-您的方法可能是async Task。那个消费者也需要这样做。等等。但:

string[] parameters = new[] {
    await GetParameter(uncleanedUrl, param1),
    await GetParameter(uncleanedUrl, param2)
};

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

asp.net mvc中的对象数组数据始终为null - javascript

我需要通过json将对象数组发送到asp.net mvc 2,但是我在mvc控制器中没有得到null对象是这样的entries[1].date = "12/22/2014" entries[1].Ref = "0002" entries[1].Credit = "100" entries[2].da…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…