C#Razor Task <string> async无法正常工作

时间:2017-07-27 21:52:29

标签: c# razor async-await

很遗憾,我正在处理C#Razor Web表单(非MVC)Web应用程序。

我获得了一个C#程序,其中包含一个异步函数类,我需要在cshtml页面上工作,我无法弄清楚如何...

下面的两个函数来自一个C#类,它与C#Forms应用程序配合得很好。 (请注意,“TextBox1”被分配了文本)。

我的问题是我需要在cshtml页面上显示字符串变量“xml”(最好是在“textarea”元素中),我似乎无法调用showData()函数来检索值

有人可以帮忙吗?

 public static async void showData(string gID)
{
    string xml = "";
    try
    {
       xml = await WaitAsynchronouslyAsync(gID);
       //The original code set a TEXTBOX to the string value
       //I need to revise this code so that I can display it on a cshtml page
       TextBox1.Text = xml;

    }
    catch (HttpRequestException)
    {
        throw new ApplicationException("Could not connect to the server");
    }       
}


public static async Task<string> WaitAsynchronouslyAsync(string gID)
{
    await Task.Delay(10);
    urlLink = "*** A custom Intranet URL ***";
    ....
    ....
    ** preparing a Token/Client response url **
    ....
    ....
    string result = await serviceClient.GetStringAsync(urlLink);
    return result;
}

我尝试绕过void功能并访问Task<string>功能,但我无法将Task<string>转换为string值。

1 个答案:

答案 0 :(得分:0)

首先

async void is difficult to work with,然后even more so on ASP.NET

  

我试图绕过void函数并访问Task函数

或者只需将async void showData更改为async Task showData - 只要您避开async void,就可以到达同一个地方。

  

但我无法将任务转换为字符串值。

您使用await执行此操作:

var xml = await WaitAsynchronouslyAsync(gID);

或:

await showData(gID);

您的通话功能需要标记为async并返回Task / Task<T>。是的,这确实会导致async / await到&#34;成长&#34;通过你的代码库,是的,这既正常又必要。