c# - 执行web服务方法并立即返回

标签 c# wcf asynchronous

C# ASP.NET 3.5

是否可以在非异步或单向的 Web 服务中“触发并忘记”一个方法?

有一个方法可以返回一个值(经过一些处理),我不需要它。它被另一个组(编写服务的人)使用。基本上,它只是通知用户 x 执行了操作 y。我只需要调用该方法并继续前进,而无需等待结果。

我尝试将 BackgroundWorker() 与 RunWorkerAsync 结合使用,但由于某种原因该方法没有触发。我无法更改 Web 服务方法,因为我无权访问他们的代码。我应该使用 BackgroundWorker、Invoke、ThreadPool 还是其他东西?我不需要返回的结果,也不需要知道它是否失败。基本上,调用该方法,如果它有效,那就太好了。如果没有,我不想停止或减慢处理速度。

public static void Test()
{
    var worker = new BackgroundWorker();
    worker.DoWork += Test2;
    worker.RunWorkerAsync(new object[] {12345, "test"});
}

private static void Test2(object sender, DoWorkEventArgs e)
{
   // Write to log that we got into the method - does not
   object[] args = e.Argument as object[];
   int num = Convert.ToInt32(args[0]);
   string name = (string)args[1];
   // call web service method here....
}

最佳答案

您可以尝试以下操作,而不是使用 Background Worker

    public static void Test()
    {
        System.Threading.ThreadPool.QueueUserWorkItem(delegate
        {
            Test2(new object[] { 12345, "test" });
        });
    }

    private static void Test2(object data)
    {
        // Write to log that we got into the method - does not
        object[] args = data as object[];
        int num = Convert.ToInt32(args[0]);
        string name = (string)args[1];
        // call web service method here....
    }

关于c# - 执行web服务方法并立即返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073296/

相关文章:

c# - 了解控制反转和依赖注入(inject)

c# - 当所有异步方法调用完成时引发事件

java - EventProcessorClient 中事件的异步处理

c# - WCF - 我什么时候应该使用 netTcpBinding

javascript - 同步执行 Sequelize 查询

java - 如果我不同步这个方法,我会得到错误的值吗?

c# - Distinct() 方法是否保持序列的原始顺序不变?

c# - 向空的 ASP.NET SignalR 组广播会浪费资源吗?

C# MySQL 提交事务不起作用(连接必须有效且打开才能提交事务)

c# - 在 silverlight 中使用 WCF CloseAsync