我在写个程序,差不多如下 (jquery)
show.aspx (这里有个button, 用于把数据提交到ajax.aspx)
ajax.aspx
{
    RunClass.postData(button提交的数据);
}RunClass.cs (类库)
class RunClass
{
    public static void postData(string datas)
    {
        //do something;
        Thread R = new Thread(new ThreadStart(targetVoid));
        R.Start();
    }    static void targetVoid()
    {
        //.... (StreamWriter 写入文本文件.txt)
    }
}但是这个线程执行不了,进不了targetVoid
这是怎么回事...
很奇怪的问题...总怀疑俺电脑有问题,但本机上的其他程序,都运行得好好的

解决方案 »

  1.   

    应该可以。在targetVoid中加断点了么?或是你看是不是代码和可执行程序的版本不同步。清理重新编译试试。
      

  2.   

    断点加过了,没运行...
    R.Start();过后就跳出这方法了..
      

  3.   


    在那个方法中加断点。
    r.start之后不离开这个方法怎么叫多线程呢?
      

  4.   

    改这样
    static void targetVoid()
    {
        MessageBox.Show("一行代码都没有,你怎么看到效果。");
    }
      

  5.   

    为什么要加“new ThreadStart()”,你的“targetVoid”这个函数按你的描述来说,好像和新建的线程是在一个类中,那就去掉这个,改成 Thread R = new Thread(targetVoid); 你试一下吧!
      

  6.   

    对了忘了说了,最后再加上 R.Start();  你试试吧!
      

  7.   


    这个好像一样会占用线程的吧?HTTP的异步应该不是一个Thread就解决的吧?印象中是这样,不知道对不对.
      

  8.   

    把你RunClass中的两个static函数去掉static,改为为静态的试试。
      

  9.   

    3楼到4楼,已经说得清楚了。“R.Start();过后”还不“跳出这方法”那么真的不知道什么是线程了。
      

  10.   

    但是 targetVoid 这个方法没进去啊我这里有个写入文本文件的操作,就是如果有方法进来了就会创建一个当天日期的如:2010-11-19.txt的文件但没有创建....
      

  11.   

    哦,写错了,不是说占用线程...因为http1.1只允许一个用户,同时有两个连接...我们提交应该算是一个连接了,如果这个连接,没有另起一个线程,好像“点击开始”的这个线程,会被占用。 就无法做其他操作了(页面上的)
      

  12.   

    另外我程序还一个一直在转的
    while(true)
      

  13.   

    难道是人工 Button Click 触发不能新建线程Thread????顶
      

  14.   


    在那个方法中加断点。
    r.start之后不离开这个方法怎么叫多线程呢?
      

  15.   

    我有把断点加到targetVoid里,但没走到那里去...show.aspx ->(ajax post)-> ajax.aspx - (类库RunClass.dll) -> postData(){new Thread} -> targetVoidtargetVoid进不了,写不了日志...
      

  16.   

    targetVoid有个方法是写日志的,
    public static void addLog(string log)
            {
                try
                {
                    string path = HttpContext.Current.Server.MapPath("/errlog/");
                    if (!Directory.Exists(path))
                        Directory.CreateDirectory(path);                using (FileStream fs = new FileStream(path + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.Append, FileAccess.Write))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.WriteLine(log);
                        }
                    }
                }
                catch { Thread.Sleep(1000); }
            }
    但是没创建一个当天日期的.txt文件
      

  17.   

    看看asp.net框架文档就知道了,page中是不行的。你把这个逻辑放到HttpMoudle中就可以了。
      

  18.   


    请问你有这个asp.net框架文档的资料么?
    发一份给我email:[email protected]或给个网址。谢谢.
      

  19.   

    这事还是靠客户端自己来执行吧当玩家点击“开始”按钮,执行一个setTimeout开始1000毫秒倒计时,当大于等于30秒,玩家把发送一条信息,把对方踢出局.