【问题标题】:Background processes in ASP.NET Web FormsASP.NET Web 窗体中的后台进程
【发布时间】:2013-12-16 18:21:10
【问题描述】:

假设我想创建一个应用程序,它可以在一个套接字上接收来自 Socket(不是页面请求)客户端的连接,同时在另一个套接字上提供 Web 表单,例如,告诉用户有多少客户端使用其他(Socket)接口。这与我正在尝试做的只是大致相似,所以如果它看起来很荒谬,请不要担心!

那么,是否可以让 ASP.NET Web 窗体应用程序中的服务器运行另一个线程来处理其他事情,而 Web 服务器为页面提供服务?有推荐的方法吗,还是需要一点技巧?

编辑: 别担心,我切换到 MVC 4,现在使用 App_Start 方法启动线程。由于线程是否中止无关紧要,只要它重新启动,这是一个合适的修复。

不过还是感谢大家的帮助, 大神

【问题讨论】:

  • 您是否有权访问服务器或者这是共享服务提供商?对于这些类型的事情,您始终可以使用 Windows 服务或计划任务。这是首选方式; ASP.NET 对于后台任务并不总是可靠的,并且容易受到会话超时等的影响。
  • 是的,我正在自己开发它(它只是很小,真的供个人使用)。你是什​​么意思Windows服务?随之而来的问题是服务器需要能够将数据发送到 Socket 客户端,这些数据是由为页面提供服务的客户端输入的。
  • 您使用的是哪个版本的 .NET?更高版本可以自托管 ASP.NET。由于您还可以自托管 WCF(或您自己的套接字服务器代码),这可能是一个解决方案。

标签: c# asp.net multithreading sockets web


【解决方案1】:

您可以尝试使用 .NET 4.5 中的异步功能,提到 here。基本上,定义一个带有“async”关键字的方法,例如:

public async Task DoThis();

注册异步任务:

RegisterAsyncTask(new PageAsyncTask(DoThis));

将您的页眉标记为 Async="true"

<%@ Page Title="Async" Language="C#" CodeBehind="Page.aspx.cs" 
       Inherits="Whatever" Async="true" %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 2023-03-28
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多