线程调用的方法中能不能包含session Request.QueryString 和ViewState?public class TOEXCEL
{
  public void aa()
  {
    这个过程中有
Server.UrlDecode(Request.QueryString("strClassNum")) & "" 
 dsResult = clsDBProcess.GetDataSet(Session("Server"), Session("Database"), sql)//提示session未宣告  }
}是不是class TOEXCEL中不能有任何参数传入?
public class bb()
{
  
protected void  cmdToExcel_Click(object sender, System.EventArgs e)
{
这里调用 aa.xx()
方法    Thread threads = default(Thread);
    TOEXCEL myDB = new TOEXCEL();
    threads = new Thread(new ThreadStart(myDB.aa));
    threads.Start();
   
}}

解决方案 »

  1.   

    提示
    只有在組態檔或 Page 指示詞中將 enableSessionState 設為 true 時,
    才能使用工作階段狀態。同時請確定 System.Web.SessionStateModule 
    或自訂工作階段狀態模組已包括在應用程式組態的 <configuration>\<system.web>\<httpModules> 區段中。dsResult = clsDBProcess.GetDataSet(Session("Server"), Session("Database"), sql)
      

  2.   

    //提示session未宣告引用 ui.page就行了
      

  3.   

    可以使用Session,z直接继承Page。
    public class bb : System.Web.Ui.Page
    {}ViewState没有试过,应该也是可以的。
      

  4.   

    可以使用,添加Web或传page参数
      

  5.   

    已经public class bb : System.Web.Ui.Page 但还是提示只有在組態檔或 Page 指示詞中將 enableSessionState 設為 true 時, 
    才能使用工作階段狀態。同時請確定 System.Web.SessionStateModule 
    或自訂工作階段狀態模組已包括在應用程式組態的 <configuration>\ <system.web>\ <httpModules> 區段中。 
      

  6.   

    在线程中,不能使用Request.QueryString 和ViewState。因为这2个对象是附属在 Page 页面对象的,而 Page 页面对象在 Page_Unload() 事件后,就会消失。访问与 Page 对象有关的属性、方法,都会引起错误。但可以访问到与Page对象无关的内存变量比如你的定义如下:class bbPage : System.Web.UI.Page
    {
      int testViewState
      {
         get
         {
            return ViewState["xx"]
         }
      }
      
      int testMemeory = 0;
    }即使你的线程的方法是在 bbPage 中,访问 this.Page 和 testViewState 都会引起错误(有时,由于你的线程执行时间太短,可能会在执行 Page_Unload 事件前就完成,不会出现错误)
    访问 testMemeory 变量就不会引起错误。
      

  7.   

    线程要执行的方法不能接受任何参数,如果要传入方法特定条件,可以将方法放在一个类中,在类中定义类的属性,需要时可以设置类的属性,然后用方法调用这些属性以实现方法参数类似的功能。同时,因为生成的线程在主应用程序线程之外运行,.NET Framework提供线程隔离,这时如果要用新的线程操纵主应用程序中的对象便不被允许。最好的办法也是将线程要访问的对象包装在类中。