在这我使用秒表。当0之间秒表值至15就会起到在屏幕1的视频和15后,将在屏幕上显示0但线程中执行Thread.sleep()
线程无法启动后线程Sleeep
public partial class Form2 : Form
{
int[] screentimings = new int[2] { 20, 20 };
Stopwatch sp;
Thread thread1;
//private System.Timers.Timer _timer = new System.Timers.Timer();
public Form2()
{
InitializeComponent();
thread1 = new Thread(new ThreadStart(A));
thread1.SetApartmentState(ApartmentState.STA);
sp = new Stopwatch();
sp.Start();
thread1.Start();
}
[STAThread]
public void showOnMonitor(int showOnMonitor)
{
Screen[] sc;
sc = Screen.AllScreens;
Form1 f = new Form1();
f.FormBorderStyle = FormBorderStyle.None;
f.Left = sc[showOnMonitor].Bounds.Left;
f.Top = sc[showOnMonitor].Bounds.Top;
f.Height=sc[showOnMonitor].Bounds.Height;
f.Width=sc[showOnMonitor].Bounds.Width;
f.StartPosition = FormStartPosition.Manual;
f.ShowDialog();
}
[STAThread]
private void A()
{
long i = sp.Elapsed.Seconds;
if (i > 0 && i < 15)
{
showOnMonitor(1);
}
else
{
showOnMonitor(0);
}
Thread.Sleep(500);
}
}
showOnMonitor(1)代码之后,但15秒后没有启动showOnMonitor (0)不起作用。 我是新的线程不知道什么是错的。这可能是因为[STAThread]
没有它给单线程异常。
你的void A没有任何循环,所以它执行一次并且线程结束。 – 2014-08-30 10:41:13
我是新的线程问题可以是愚蠢的。我认为void A()被线程一遍又一遍地调用。 – 2014-08-30 10:44:09
如果你想一次又一次地调用某些东西,你需要使用'Timer'。 – 2014-08-30 10:46:31