我创建了线程类并启动了该线程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Thread_class
{
class Program
{
class SubThread
{
public void PrintValue()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Inside PrintValue() of SubThread Class " + i);
Thread.Sleep(5);
}
}
}
static void Main(string[] args)
{
SubThread subthread=new SubThread();
Thread thread = new Thread( new ThreadStart( subthread.PrintValue));
thread.Start();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Inside Main Class " + i);
Thread.Sleep(1);
}
thread.Join();
}
}
}
如何在每个指定的时间段内执行上述方法?是否可以使用线程。 timer方法设置启动线程的时间段?
答案 0 :(得分:0)
是的,您可以使用Threading.Timer
。
int timeToStart = 2000;
int period = 1000;
SubThread sub = new SubThread();
Timer timer = new Timer(o => sub.PrintValue(), null, timeToStart, period);
计时器将等待1秒钟,然后每2秒运行一次任务。
您不需要为此创建自己的线程,如果需要,计时器将生成一个线程。
不要忘记在完成后拨打Dispose
。
答案 1 :(得分:0)
是的,你可以使用System.Threading.Timer
,同时注意System.Threading.Timer
每次都在ThreadPool的线程中调用回调方法,所以你甚至不需要创建Thread,只需运行定时器,回调将在不同的线程中运行。
致电
Timer t = new Timer(TimerProc, null, startAfter, period);
private void TimerProc(object state)
{
// This operation will run in the thread from threadpool
}
答案 2 :(得分:0)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Thread_class
{
class Program
{
static void Main(string[] args)
{
SubThread subthread = new SubThread();
Thread thread = new Thread(subthread.PrintValue);
thread.Start();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Inside Main Class " + i);
Thread.Sleep(1);
}
thread.Join();
Console.ReadKey();
}
}
class SubThread
{
public void PrintValue()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Inside PrintValue() of SubThread Class " + i);
Thread.Sleep(1);
}
}
}
}
希望这会对你有所帮助。