• 成人电影 成人电影 成人电影
  • 成人电影 成人电影 成人电影
  • 成人电影 成人电影 成人电影
  • 设为首页 - 加入收藏
    广告 1000x90
    您的当前位置:云鼎彩票 > 云鼎娱乐彩票 > 编程教程 > 正文

    将当前请求的上下文作为参数传递给多线程的方

    来源:未知 编辑:admin 时间:2015-09-02

    由于请求执行完毕后,多线程的程序可能还在运行,因此,在多线程的代码中,是无法直接使用 HttpContext 对象的,但是,我们可以把它作为参数及传递到多线程的代码中。实现这种功能,可以采用下面的两种方法:

    一,将 HttpContext 对象作为类的成员传递,下面是这种方法的完整实例代码,直接拷贝即可执行:

    ASPX 代码

    1. <%@ Page Language="C#" %> 
    2. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    3. <script runat=
    4.   public class ThreadWork 
    5.   { 
    6.     public System.Web.HttpContext ctx { setget; } 
    7.     public ThreadWork() { } 
    8.     public void DoTest() 
    9.     { 
    10.       if (System.IO.File.Exists(HttpRuntime.AppDomainAppPath + "Log.txt")) 
    11.       { 
    12.         System.IO.File.Delete(HttpRuntime.AppDomainAppPath + "Log.txt"); 
    13.       } 
    14.        for (int i = 0; i < 10; i++) 
    15.       { 
    16.         //将内容写入到文件里以记录测试的结果。 
    17.         using (System.IO.StreamWriter sw = new System.IO.StreamWriter(HttpRuntime.AppDomainAppPath + "Log.txt"true)) 
    18.         { 
    19.           sw.WriteLine("当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 得到的参数:" + ctx.Request.QueryString["id"]); 
    20.           sw.Flush(); 
    21.           sw.Close(); 
    22.           sw.Dispose(); 
    23.         } 
    24.         System.Threading.Thread.Sleep(5000); 
    25.       } 
    26.     } 
    27.   } 
    28.  
    29.   protected void Page_Load(object sender, EventArgs e) 
    30.   { 
    31.     ThreadWork tw = new ThreadWork(); 
    32.     tw.ctx = System.Web.HttpContext.Current; 
    33.     System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(tw.DoTest)); 
    34.     thread.Start(); 
    35.   } 
    36. </script> 
    37. "http://www.w3.org/1999/xhtml"
    38. "server"
    39.   www.qqview.com 
    40.  
    41.  
    42.   "form1" runat="server"
    43.  
    44.  

    我们可以以这种方法进行访问,http://localhost:11249/WebSite1/ThreadTest.aspx?id=mengxianhui

    得到的结果如下:
    Txt 代码
    当前时间:2011-02-11 20:11:07 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:12 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:17 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:22 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:27 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:32 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:37 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:42 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:47 得到的参数:mengxianhui
    当前时间:2011-02-11 20:11:52 得到的参数:mengxianhui

    二,采用 ParameterizedThreadStart 类实现,完整源代码如下:

    ASpX 代码

    1. <%@ Page Language="C#" %> 
    2. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    3. <script runat=
    4.   protected void Page_Load(object sender, EventArgs e) 
    5.   { 
    6.     System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(DoTest)); 
    7.     thread.IsBackground = true
    8.     thread.Start(System.Web.HttpContext.Current); 
    9.     Response.Write("页面请求完毕。"); 
    10.   } 
    11.  
    12.   private static void DoTest(Object context) 
    13.   { 
    14.     System.Web.HttpContext ctx = context as System.Web.HttpContext; 
    15.     if (System.IO.File.Exists(HttpRuntime.AppDomainAppPath + "Log.txt")) 
    16.     { 
    17.       System.IO.File.Delete(HttpRuntime.AppDomainAppPath + "Log.txt"); 
    18.     } 
    19.     
    20.     for (int i = 0; i < 10; i++) 
    21.     { 
    22.       //将内容写入到文件里以记录测试的结果。 
    23.       using (System.IO.StreamWriter sw = new System.IO.StreamWriter(HttpRuntime.AppDomainAppPath + "Log.txt"true)) 
    24.       { 
    25.         sw.WriteLine("当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 得到的参数:" + ctx.Request.QueryString["id"]); 
    26.         sw.Flush(); 
    27.         sw.Close(); 
    28.         sw.Dispose(); 
    29.       } 
    30.       System.Threading.Thread.Sleep(5000); 
    31.     } 
    32.   } 
    33. </script> 
    34.  
    35. "http://www.w3.org/1999/xhtml"
    36. "server"
    37.  
    38.  
    39.  
    40.   "form1" runat="server"
    41.  
    42.  

    得到的结果与上面相同。

    相关文章:

    网友评论:

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    

    模板天下 www.mobantianxia.com 联系QQ:498872301 邮箱:498872301@qq.com

    Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms

    Top