【问题标题】:ASP.Net / C# 4.5 -- Async Processing -- Async AwaitASP.Net / C# 4.5 -- 异步处理 -- 异步等待
【发布时间】:2015-03-25 20:55:48
【问题描述】:

我正在寻找我应该走的最佳路线的方向。我已经发布了几次,偏离了一些推荐的设计模式。根据我想要完成的工作,我还没有真正得到一个好的方向。我是使用异步处理的新手,希望能得到一些正确方向的指点。到目前为止,在我之前的一篇文章中,我被称为无知,因为我要求提供代码示例。请理解我一直在阅读所有内容,并尝试了我在互联网上可以找到的所有内容。不用说,我可以有很多不同的方向,我不确定哪个是最好的。

我将在高层次上解释我正在尝试做的事情,如果有人可以通过指出正确的方向来帮助我,我将不胜感激。另外,如果有人可以向我指出一些代码示例,我会喜欢的。我不介意阅读这些材料,但如果我能看到代码与它所说的内容相一致,那就更有意义了。我发现的大多数文档都有代码示例或部分代码示例,我一直在尽最大努力尝试使用我发现的内容来满足我的特定需求。到目前为止,运气并不好。我承认,当谈到 ASYNC 处理时,我想我是无知的。 :)

无论如何,这就是我想要完成的。我忽略了我可能考虑使用的任何特定技术,以避免关于我发布的内容是否过时或落后的争论。我正在寻找一个正确方向的观点,并且在这一点上我对任何事情都持开放态度。我只需要让它工作。

这是我需要做的基础知识

  1. 我正在使用一个 ASP.Net 网站“项目”。
  2. 我有一个屏幕,用于使用 Active Reports 7 打印报告。
  3. 我的任务是允许用户单击“打印/预览”按钮并启动报表处理。
  4. 报告运行时,我需要让用户能够单击“取消”按钮并终止处理并返回报告屏幕。 (因此,用户界面需要在报告处理期间做出响应,以便用户可以点击取消按钮。)
  5. 在处理报告时,我需要显示一条弹出消息以指示报告正在运行。
  6. 当报告完成处理后,我需要隐藏此弹出消息,以向用户指示报告已完成。然后我需要打开报告以供用户查看。目前,这是我们在报表处理代码期间准备的一个 JavaScript 函数,它打开一个新窗口并调用报表查看器。 (因此,报告完成后,我需要能够调用 javascript 函数。)

如果有人能指出我正确的方向,我将非常感激。我不介意做腿部工作和阅读大量文档。我只需要能够知道我在看什么将为我提供上述功能。就像我之前所说的,无论是否无知,如果我能得到一些示例工作代码(不要求任何人为我编写代码,只是一些我可以逐步完成并帮助了解正在发生的事情的代码),那将有很大帮助。

提前感谢您的时间和考虑。

【问题讨论】:

    标签: c# asp.net asynchronous async-await


    【解决方案1】:

    因为您希望在服务器端进行一些操作,同时 UI 响应并显示进度。显示事件的进展。我建议使用 Signalr.Net。

    http://signalr.net/

    http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

    这是一个实时 Web api,您可以使用它创建一个集线器,该集线器具有“ProcessReport”和“cancelProcessing”等功能,您可以在单击按钮打开连接时从 javascript 调用它,并显示进度弹出窗口取消按钮。在 js 中向集线器注册一个客户端事件说“updatestatus”,一旦操作完成,可以从服务器调用它来关闭弹出窗口并最终关闭信号器连接。同样,在弹出的取消单击中,您可以再次调用中心函数 cancelProcessing 并执行取消并使用 updateStatus 回调。

    希望这会有所帮助。

    【讨论】:

    • 非常感谢。这正是我正在寻找的。我将查看您提供的链接并试一试。再次感谢您的帮助和解释。
    • 我正在对此进行调查。我可以让示例 SignalR 项目作为 Web 应用程序运行,但我正在使用的项目是一个网站项目。您知道 SignalR 是否可以与网站一起使用,以及必须进行哪些设置才能使其正常工作?根据我的发现,它应该能够工作,但我认为网络配置有一些修改。但是,我找不到任何可以告诉我这些变化是什么的东西。我还在调查这个,但想问问你是否曾经在网站上使用过这个,如果有,你必须做什么。
    • 嗨布鲁斯,是的,它也适用于网站...我个人将它用于 MVC3 和 4 网络应用程序,但这是我在需要制作的额外条目上找到的博客。 stackoverflow.com/questions/11130296/…。我建议使用 Nuget 库包管理器来安装 SIgnalr,因为它会在安装时自动为您添加大部分 web.config 条目。
    • 仅供参考——我创建了一个新帖子,详细说明了我收到的错误。我想在此处提及该帖子,以防其他人阅读此帖子并遇到同样的问题。如果得到回答,它可能会帮助某人......stackoverflow.com/questions/15485804/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2018-09-26
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多