【问题标题】:Using WCF call from ASP.net asyncronously, but not behaving asynchronously异步使用来自 ASP.net 的 WCF 调用,但不异步执行
【发布时间】:2009-10-02 17:21:18
【问题描述】:

我已经实现了一些 WCF 代码,它从 WCF 调用返回数据,它可以工作,但行为同步。

    IAsyncResult BeginGetAsyncData(object src, EventArgs args, AsyncCallback cb, object state)
    {
        _client = new ServiceReference1.Service1Client();

        return _client.BeginGetPermissionsByStaffID("xxx", cb, state);
    }

    void EndGetAsyncData(IAsyncResult ar)
    {
        //ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
        ServiceReference1.tblUser_Permission[] permissions = _client.EndGetPermissionsByStaffID(ar);

        System.Threading.Thread.Sleep(2000);

        dgResults.DataSource = permissions;
        dgResults.DataBind(); 
    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        PageAsyncTask task = new PageAsyncTask(BeginGetAsyncData, EndGetAsyncData, null, null);

        Page.RegisterAsyncTask(task);

        txtOut.Text = "Waiting...";
    }

我看到的是两秒钟的暂停,然后出现“等待”消息。我没有明确生成一个新线程,但据我了解,当我将 WCF 服务定义为异步时,这不是必需的。

任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net wcf


    【解决方案1】:

    PageAsyncTask 在页面生命周期内与其他进程异步执行。

    在所有这些异步任务完成之前,实际页面不会传递给浏览器......那时用户将看到按钮文本的更改。

    【讨论】:

    • 噢!这就说得通了。我想如果你有一些可能需要一段时间的事情,它仍然有它的优势。可以在服务器上压缩时间,以便用户看到更少的延迟。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2017-11-23
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多