ASP.NET—Cache以及跨线程访问

Cache

Cache:也就是缓存,也是服务器的一种状态保持机制,存在服务器的内存中。
虽然Cache与Session都是存在服务器的内存中,但是它们差别却很大:
1)Cache是所有用户共享的,Session是属于每个单独用户的
2)Cache也可以指定过期时间,如果不指定,那么只要服务器不挂,Cache就会一直存在;而Session默认有一个过期时间,一般是20分钟

Cache的方法

1. 指定缓存的过期时间:

Cache.Insert();

2. 移除缓存:

Cache.Remove("userInfoList");
跨线程访问

1. 线程的创建

	//括号中是线程要执行的方法
    Thread myThread = new Thread(threadStart);
    myThread.Start();

2. 线程的一些属性

//设置线程的优先级
myThread.Priority = ThreadPriority.Highest;//建议操作系统将创建的线程优先级设置为最高。

//给线程设置一个名字
myThread.Name = "";

//设置线程为后台线程
//如果不设置为后台线程,假如应用程序退出的时候,线程并不能完全退出   
myThread.IsBackground = true;	

3. 线程的一些方法

//强行终止线程,一般不要用这个方法,太暴力
myThread.Abort();
//阻塞UI的主线程,单位是毫秒,如果主线程等待一定时间后,线程还没执行完,则主线程将不再等待而继续执行
myThread.Join(1000);

4. 跨线程访问

/// <summary>
/// 跨线程访问
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
    Thread thread1 = new Thread(ShowResult);
    thread1.IsBackground = true;
    thread1.Start();
}
private void ShowResult()
{
    int a = 0;
    for (int i = 0; i < 600000000; i++)
    {
       
        a = i;
      
    }
    
	//是否要对文本框进行跨线程访问。
    if (this.textBox1.InvokeRequired)
    {
        //Invoke:去找创建TextBox的线程(主线程(UI线程)),由主线程完成委托方法的调用。
        this.textBox1.Invoke(new Action<TextBox, string>(ShowTextBoxValue), this.textBox1, a.ToString());
    }
    else
    {
        this.textBox1.Text = a.ToString();
    }
}

private void ShowTextBoxValue(TextBox txt,string value)
{
    txt.Text = value;
}

5. 线程池
为什么要用线程池?
线程创建非常消耗资源,且线程创建非常慢,占用大量的内存空间,每个线程最少1M内存开销。而直接从线程池取要比创建线程快。不过从线程池取出的线程都是后台线程,且优先级都是Normal,无法设定它的优先级。

从线程池中取线程:

ThreadPool.QueueUserWorkItem(WaitCallback callBack, object state);

什么时候用线程池?什么时候用手动创建线程?
1)能用线程池的就用线程池
2)我们想手动关闭线程的话那么必须手动创建了。
3)我们需要对线程池的线程的优先级做设置的情景下,只能使用手动创建线程。
4)如果执行的线程执行时间特别长,建议手动创建线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值