ASP.NET—Cache以及跨线程访问
发布日期:2021-06-29 11:16:00 浏览次数:2 分类:技术文章

本文共 1689 字,大约阅读时间需要 5 分钟。

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. 跨线程访问

/// /// 跨线程访问/// /// /// 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
(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)如果执行的线程执行时间特别长,建议手动创建线程。

转载地址:https://blog.csdn.net/zwj_jyzl/article/details/88386197 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaScript—DOM节点的增删改查
下一篇:ASP.NET—Ajax的基本使用

发表评论

最新留言

不错!
[***.144.177.141]2024年04月24日 17时13分14秒