C#任务WhenAll on方法根据等待的调用返回结果 - c#

我正在尝试使此代码以异步方式工作,但我有一些疑问。

public async Task<string> GetAsync(string inputA, string inputB)
{
    var result = await AnotherGetAsync(inputA, inputB)
        .ConfigureAwait(false);

    return result.Enabled
        ? inputB
        : string.Empty;
}

我有一些字符串输入集合,我想在他们上运行此方法。
然后,我将执行Task.WhenAll,并过滤非空字符串。

但这不会像我已经在等待结果的方法那样异步吗?

参考方案

我认为真正的问题是:

如果在方法A中等待单个项目,如果我在调用方法A的一系列项目中使用Task.WhenAll的话,是否可以按顺序运行?

它们将与Task.WhenAll同时运行。
也许最好用一个例子来解释一下:

void Main()
{
    Test().GetAwaiter().GetResult();
}

private async Task<bool> CheckEmpty(string input)
{
    await Task.Delay(200);
    return String.IsNullOrEmpty(input);
}

private async Task Test()
{
    var list = new List<string>
    {
        "1",
        null,
        "2",
        ""
    };

    var stopwatch = new Stopwatch();
    stopwatch.Start();

    // This takes aprox 4 * 200ms == 800ms to complete.
    foreach (var itm in list)
    {
        Console.WriteLine(await CheckEmpty(itm));
    }

    Console.WriteLine(stopwatch.Elapsed);
    Console.WriteLine();
    stopwatch.Reset();
    stopwatch.Start();

    // This takes aprox 200ms to complete.
    var tasks = list.Select(itm => CheckEmpty(itm));
    var results = await Task.WhenAll(tasks); // Runs all at once.
    Console.WriteLine(String.Join(Environment.NewLine, results));
    Console.WriteLine(stopwatch.Elapsed);
}

我的测试结果:

False
True
False
True
00:00:00.8006182

False
True
False
True
00:00:00.2017568

从JAVA调用方法C#.NET - java

我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

从ASP.NET 1.1转换为ASP.Net 3.5后,单选按钮停止工作 - javascript

[我在下面以FYI的形式发布我们的问题和解决方案。如果您有Microsoft或代表机构对此问题的正式声明,我会将其标记为答案。否则,我下面的帖子将作为答案]。问题:我们采用了ASP.Net 1.1程序,并将其转换为ASP.Net 3.5。该页面最初正确显示,默认情况下选中一个单选按钮,并显示一个项目列表(“列表A”)。当我们单击另一个单选按钮时,它将正确显示…

Task.IsCancelled不起作用 - c#

我有以下示例代码:static class Program { static void Main() { var cts = new CancellationTokenSource(); var task = Task.Factory.StartNew( () => { try { Console.WriteLine("Task: Runni…

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

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

在ASP.NET MVC中创建数据库回调的最有效方法 - c#

我有一个ASP.NET MVC网页,该网页基本上通过日期过滤器显示MS SQL数据库中表的行。当新行插入数据库表时,我想用新行列表更新网页视图。实现此目标的最有效方法是什么?基本上,我想从我的JavaScript创建一个到数据库服务器的回调,以用新结果更新UI。假设数据库表中的行数很大。(〜1百万)谢谢,cas 参考方案 如果数据库更新非常频繁,则可以按特定…