大家一般都认为.net是制作网页的,需要开启多线程吗?还有.net每一个用户访问就开启了一个线程了,还需要我们自己去开启吗?
带着这样的问题,我们独占网络一一位您解释。
首先在什么情况下要开启多线程?
由于我们浏览器每一次访问都是一次单独过程,需要这次访问结束后才可以运行下一次的访问,就是我们的程序运行一样,先运行上面的程序,再运行下面的程序,由这样的关系,所以我们会发现一个问题就是如果我这一次操作需要运行的时候需要特别长的时间,我们就会发现程序一直运行,但是用户看不到任何的效果,还有我们需要同步运行下一个进程的时候,您会发现程序现在由于被上一个进程占用的了,没有办法运行下面的程序,所以这样同步的情况下一般也是需要开启多线程的,还有一种情况就是我们的网站需要有一个一直在运行的线程来计算网站的信息,这次情况一般会写在Global文件里面。
好了那么多,我们现在就来开启一个多线程测试一个。
首先多线程需要引用 using System.Threading;
然后我们需要定义一个线程,之后就是开启线程,下面是例子的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//定义一个多线程
Thread thread = new Thread(showrun);
//开启线程
thread.Start();
}
}
/// <summary>
/// 多线程的方法
/// </summary>
public void showrun()
{
for (int i = 0; i < 100; i++)
{
//提醒多线程不能使用 cookies
Session["duzhan"] = i;
//让线程休息
Thread.Sleep(1000);
}
}
最后说一下开启多线要注意的事情
由于开启线程是运行在服务器的内存之中,不是运行在浏览器中,所以cookies在多线程里面是不能被调用到的,如果调用就会出现报错
开启线程后一些system.web的方法没有办法引用到,所以 Server.MapPath不是能被引用到的,所以如果要调用此方法可以用 System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) 代替
所以一般线程里面的方法是由ashx文件运行,一般就不能将信息存在session,因为过多几个类,没有不能引用到system.web了,所以session而且有cache都引用不了
一般这种情况下我们就将参数传递过来被引用,如果希望将信息保存下面,最好的方法就是保存到数据库里面去。
如:有不懂可以联系独占网络技术人员 http://www.sz886.com