在C#中如何实现两个线程交替工作

如题所述

在C#中如何实现两个线程交替工作?
最近在学习研究多线程,还有异步编程方面的知识,结合自己做的项目,遇到这样一个问题:
写了一个程序,它是个控制台程序,会一直运行直到程序关闭,我想用线程实现的方法是通过一个线程每过五分钟或者一分钟,将这一段时间控制台上显示的内容写入txt里面,保存下来,但是写入的时候,控制台程序还在运行,到下一个一分钟后,在将第二个一分钟的内容写入txt里面保存下来。
大概过程是这样:比如在控制台程序他会一直输入1,2,3,4,5,,,,,N,一分钟后,比如写到60,这时候就将1到60写入到txt文件中,不能影响程序的运行,等第二个一分钟过后,比如写到120,就将61到120写入txt文件中,一直延续下去
这个应该如何实现,我个人认为要用两个线程交替工作,一开始线程1工作,一直监视程序运行,一分钟后线程1将数据写入文本文件,这时候线程2开始监视程序运行,一分钟后将数据写入文本,不然我觉得一个线程写会漏掉数据。
大家觉得可行吗,有实现的代码就更好了。之前一直没接触过多线程编程问题,有点无处下手的感觉。
温馨提示:内容为网友见解,仅供参考
无其他回答

在C#中如何实现两个线程交替工作
大概过程是这样:比如在控制台程序他会一直输入1,2,3,4,5,,,N,一分钟后,比如写到60,这时候就将1到60写入到txt文件中,不能影响程序的运行,等第二个一分钟过后,比如写到120,就将61到120写入txt文件中,一直延续下去 这个应该如何实现,我个人认为要用两个线程交替工作,一开始线程1工...

c#中两个相互独立的程序之间相互交换数据,实时的。怎么做?
方案1、可以用数据库进行数据交互 方案2、用WebService或Remoting(在.net3.5中,这2者已经统一为wcf了)具体需要你去搜索一下相关资料

C#如何实现多个线程交替售票 C#的线程不能重复使用,请问要怎么弄才能实...
线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程 通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoResetEvent 将保持终止状态,直到一个正在等待的线程被释放,然后自动返回非终...

c#中线程怎么间通信
C# 中线程之间进行通信是程序并行执行的关键。通过以下方式,线程可以实现有效交流:首先,共享变量的使用。多个线程共享一个变量,通过对其的读写操作,可以实现信息交换。然而,这种方式需要特别注意线程安全问题,防止数据竞争。其次,信号量的引入实现同步与互斥。信号量控制线程对资源的访问,确保资源在同一...

C#的processbar问题,怎么才能使得在做两个for循环的时候,进度条一点一 ...
这是因为你的for循环与gui线程是同一条,所以只有在执行完所有循环以后才会刷新processbar。解决方法是将循环放到另一个线程中,然后通过委托来更新processbar就可以了。

C# 多线程方法 控制两个进度条
只要你将实际的处理用两个不同的线程来处理。在Form上使用Timer定期查看不同进程的前进情况即可。或者将Form中的两个用于更新进度条的方法作为实际处理进程的事件处理函数即可。由各个进程来调用事件,在事件中更新进度条。第二种方法更能实时的反映进度情况。

在C#中如何使用多线程,每隔几秒去执行一个方法?
\/\/\/ 这个方法是 静态的 \/\/\/ public static void ThreadFunc(){ \/\/ 线程停止运行的标志位.Boolean done = false;\/\/ 计数器 int count = 0;while (!done){ \/\/ 休眠1秒.Thread.Sleep(1000);\/\/ 计数器递增 count++;\/\/ 输出.Console.WriteLine("[静态]执行次数:{0}", count);} } \/\/...

c#中跨线程异处理的方式
C#要这种注意跨线程的问题,invoke前提是创建了句柄,有handle被创建,没有句柄你去invoke就会报错。在窗体开始绘制的的时候这个时候不一定代表初始化结束了,这时候你引入线程去invoke去跨线程某个控件是错误的,所以初始化线程我们需要把变量存储在内存中。Invoke(new MethodInvoker(delegate{ }));这个用法...

C#中foreach语句可以跨线程进行遍历?
这个牵扯到线程之间的通信问题,变量的修改权限与同步的问题,你要问可以不可以,当然可以,但是很容易出问题,比如你对一个变量进行遍历,期间另一个线程对变量进行修改了,那你遍历下去势必导致越界之类的问题,所以你要控制好线程之间的问题

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

相似回答