【问题标题】:Adding asynchronous code support to server side [closed]向服务器端添加异步代码支持[关闭]
【发布时间】:2012-09-21 21:34:06
【问题描述】:

我需要在我的服务器端编写一些并行代码。我知道 .净 4.5 。 但我需要在 .网 4 . 如何制作并行代码并等待它完成。是否有使用 TPL 库的示例。 我的服务器端是 Wcf 服务,我按顺序调用 db 直到获得最终结果。这些调用可以并行并在短时间内获取所有数据。 提前致谢 。

【问题讨论】:

  • 定义服务器端。需要更清楚你想做什么。 Parallel.Foreach 块。
  • 问题太笼统了。 Parallel 类将是你想要的,它上面有哪些方法,无法从这些小信息中分辨出来。
  • 我在服务器端有 Wcf 服务。我正在调用数据库,我想并行数据库调用,这样我就可以节省时间直到得到最终结果。

标签: c# asp.net .net task task-parallel-library


【解决方案1】:

创建工人阶级:

public class AsyncClass
{
    public delegate void WorkFinishedDelegate();

    public event WorkFinishedDelegate WorkFinishedEvent;

    public void StartJob()
    {
        System.Threading.ThreadStart ts = new System.Threading.ThreadStart(DoSomeJob);
        System.Threading.Thread th = new System.Threading.Thread(ts);
        //this will stast async thread...
        th.Start();
    }

    void DoSomeJob()
    { 
        //TODO: do your job


        //nofity you have completed...
        if (WorkFinishedEvent!= null)
        {
            WorkFinishedEvent();
        }
    }
}

给你的班级打电话:

        AsyncClass ac = new AsyncClass();
        ac.WorkFinishedEvent += new AsyncClass.WorkFinishedDelegate(ac_WorkFinishedEvent);
        ac.StartJob();

        void ac_WorkFinishedEvent()
        {
            //here you have been notified!
        }

【讨论】:

  • 我想在我的 Wcf 服务上使用这个代码,所以我需要等到工作人员完成。
  • 你仍然可以使用这段代码,你只需要创建一个循环。下面是它的实现方法: 1. 在 AsyncClass 中添加 bool 属性 HasFinished。 2.在DoSomeJob方法里面设置HasFinished=true; 3.调用ac.StartJob()后;创建 while 循环,您将在其中等待 ac.HasFinished == true; 4.这就是你所需要的:)
【解决方案2】:

对于数据库 ADO 有异步支持。

Asynchronous Operations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-09
    • 2011-04-22
    • 2016-02-10
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多