C# 创建2个线程挂起,让这个线程内的不同事件每隔5秒执行一次,怎么实现?

Class1 :
.............
public void Resource()
{
我是想让这段程序 每隔5秒钟执行一次

}
................

////

Class1 h1= new Class1();
private void button1_Click(object sender, EventArgs e)
{
Thread esource = new Thread(new ThreadStart(h1.esource));
esource.Start();
}

不要使用Suspend和Resume方法来同步线程活动。你可以不知道它是什么代码执行线程挂起。如果挂起持有锁的线程的安全权限评估期间,AppDomain中的其他线程可能被阻止。如果线程正在执行一个类的构造函数把它挂AppDomain中尝试使用类其他线程将被阻塞。因此,它是容易出现僵局。

这是他的过时的原因。
所以只要你不使用lock语句一般是一点问题都没有。放心用吧!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-10
如果你没有必要对这个类严格控制的话(比如挂起操作 控制优先级操作等等)
创建两个timer就好了 timer使用的是线程池的线程 达到的效果是一样的

new ThreadStart(delegate(){
h1.esource();
Thead.Sleep(5000);
});
第2个回答  2013-04-10
执行一下 休眠5秒 就可以了追问

怎么休眠?

追答

Thead.Sleep(5000);

第3个回答  2019-05-18
c#中线程挂起相当于该线程暂时不继续执行下去了,如果从代码去看就是suspend执行了以后这个线程就停在挂起时执行的那句代码上了,挂起后恢复就相当于线程继续从挂起时停留的代码上开始继续向下执行了,相当于跑步时候的停止与继续起跑动作

C# 创建2个线程挂起,让这个线程内的不同事件每隔5秒执行一次,怎么实现...
不要使用Suspend和Resume方法来同步线程活动。你可以不知道它是什么代码执行线程挂起。如果挂起持有锁的线程的安全权限评估期间,AppDomain中的其他线程可能被阻止。如果线程正在执行一个类的构造函数把它挂AppDomain中尝试使用类其他线程将被阻塞。因此,它是容易出现僵局。这是他的过时的原因。所以只要你不使用...

C# 如何间隔一定的时间执行一次代码?
1、可以使用Timer定时器,设置指定的时间执行一次 在C#里关于定时器类就有3个 1、定义在System.Windows.Forms里 2、定义在System.Threading.Timer类里 3、定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内...

c#进入线程执行的程序,thread不是重复执行的吗?如果我要重复执行,需要...
线程不是重复执行的,你想呀,想用线程实现去下载个文件,不能让它不停的重复去下吧?想重复要自己控制它,比如像你说的加个死循环,但要设个让循环退出的 阀门 比如说加个bool变量,在外部改变量的值,死循环就能退出。

请问C#中使用线程池,这样的使用方式(下图)正确吗?后台有三个方法需要...
1. 应用程序中线程把大部分的时间花费在等待状态,等待某个事件发生,然后给予响应。这一般使用 ThreadPool(线程池)来解决。2. 线程平时都处于休眠状态,只是周期性地被唤醒。这一般使用 Timer(定时器)来解决。ThreadPool 类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Window...

C#如何接收另一个线程的返回值
1、这个线程和你的当前页面不在同一个线程,当前页面并不知道你这个ThreadTryRequest在别的线程中是什么样的状态,当前页面的代码也不会等你这个这个线程执行完就执行掉了,所以你不可能马上拿到这个线程的值的。2、你这个应用,明显不该用异步的线程来执行,如果要用同步模式,我不知道你这个是为了什么...

c# 定义一个一分钟自己执行一次的方法
加个Timer控件,在timer1的tick事件中调用你更新数据库的方法即可 private void button1_Click(object sender, EventArgs e){ timer1.Enabled = true;timer1.Interval = 60000; \/\/60秒 button1_Click(sender, e);\/\/这里假设你是点击button1更新数据库 \/\/如果是自己写的方法,也可以直接调用你的...

NET中的三种Timer的区别和用法
Form_Timer_Tick方法。在这个方法中,我们让她不停的加一个数字并显示在窗体上,2个按钮提供了对计时器的控制功能。执行的时候你去点击其他窗体在回来,你会发现我们的窗体失去响应了。因为我们这里使用Thread.Sleep(3000);让当前线程挂起,而UI失去相应,说明了这里执行时候采用的是单线程。也就是执行...

C#如何在另一个类的线程中对Textbox内容进行修改?
\/\/recevie类里加几行代码以取得那个textboxTextBox tb=null;public void Start(TextBox tb=null){this.tb=tb;\/\/你原本的start中的其它代码}\/\/以下内容也添加至Receive类public delegate void textbox_delegate(string msg);public void textbox(string msg) { if(tb==null) return; if(tb....

NET中的三种Timer的区别和用法
双击这个控件就可以看到 Form_Timer_Tick方法。在这个方法中,我们让她不停的加一个数字并显示在窗体上,2个按钮提供了对计时器的控制功能。 执行的时候你去点击其他窗体在回来,你会发现我们的窗体失去响应了。因为我们这里使用Thread.Sleep(3000);让当前线程挂起,而UI失去相应,说明了这里执行时候采用的是单线程。也...

相似回答