用 chukeh.dll 实现 web 端的多线程操作

来源:互联网 发布:灵活就业退休金咋算法 编辑:程序博客网 时间:2024/06/05 19:41

 

详细说明

示例下载

 

这些方法可以在 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;
        }

原创粉丝点击