这些方法可以在 Web 应用中实现用户/全局级别的多线程任务,并可监控状态及控制。
Web 多线程适合实现长时间的 Web 请求或其它操作,例如统计、分析、备份等操作。
建议结合 Ajax 实现 Web 多线程
用户级线程 ---- 与用户相关,每个用户都可以开启一个线程,线程见相互独立,互不干扰。
例如:用户 12:00 在应用 Http://localhost/Sample 上启动线程开始统计最近一个月的数据,然后可以关掉浏览器,在一个小时后 13:00 查看线程的执行结果或进行操作
全局级线程 ---- 一个 Web 应用只能同时开启一个线程,同一个应用的任何用户都可以与此线程交互。
例如:用户使用办公室的电脑在应用 Http://localhost/Sample 上启动线程开始扫描服务器的所有文件,然后下班后可以通过家里的电脑查看应用 Http://localhost/Sample 的执行状态,并操作
示例代码:
switch (Context.Request.Params["Command"])
{
case "CurrentStart":
Context.Response.CacheControl = "no-cache";
Chukeh.Data.CResult _CResult = Chukeh.Current.CurrentThreadStart("Thread", ThreadStart);
Context.Response.Write(_CResult.Message);
break;
case "CurrentAbort":
Chukeh.Data.CResult _CAResult = Chukeh.Current.CurrentThreadAbort();
Context.Response.Write(_CAResult.Message);
break;
case "GlobalStart":
Context.Response.CacheControl = "no-cache";
Chukeh.Data.CResult _GResult = Chukeh.Current.GlobalThreadStart("Thread", ThreadStart);
Context.Response.Write(_GResult.Message);
break;
case "GlobalAbort":
Chukeh.Data.CResult _GAResult = Chukeh.Current.GlobalThreadAbort();
Context.Response.Write(_GAResult.Message);
break;
case "ReloadStatus":
switch (Chukeh.Current.CurrentThreadState)
{
case CThread.ThreadState.None:
Context.Response.Write(Chukeh.Current.CurrentThreadArgument + "[没有线程]" + "|");
break;
case CThread.ThreadState.Running:
Context.Response.Write(Chukeh.Current.CurrentThreadArgument + "[运行中]" + "|");
break;
case CThread.ThreadState.Stoped:
Context.Response.Write(Chukeh.Current.CurrentThreadArgument + "[已终止]" + "|");
break;
default:
Context.Response.Write(Chukeh.Current.CurrentThreadArgument + "[未知状态]" + "|");
break;
}
switch (Chukeh.Current.GlobalThreadState)
{
case CThread.ThreadState.None:
Context.Response.Write(Chukeh.Current.GlobalThreadArgument + "[没有线程]");
break;
case CThread.ThreadState.Running:
Context.Response.Write(Chukeh.Current.GlobalThreadArgument + "[运行中]");
break;
case CThread.ThreadState.Stoped:
Context.Response.Write(Chukeh.Current.GlobalThreadArgument + "[已终止]");
break;
default:
Context.Response.Write(Chukeh.Current.GlobalThreadArgument + "[未知状态]");
break;
}
break;
default:
break;
}
664

被折叠的 条评论
为什么被折叠?



