依次单个运行进程的问题,急!急!急!急!

chouglingy 2008-01-05 03:35:38
使用Timer控件设定程序在指定的时间执行(T1,T2,T3,T4...)进程.
请问:怎样能做到当进程(T1)运行完了之后再执行(T2)之后再执行(T3,T4......)?也就是按顺序一个一个运行,上一个完成之后再执行下一个!
...全文
222 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
chouglingy 2008-01-05
  • 打赏
  • 举报
回复

void timerStart_Tick(object serder, EventArgs e)
{
try
{
string strNowTime = DateTime.Now.ToString("HHmmss");
if (strAppRunStartTime == strNowTime)
{
Thread t1= new Thread(new ThreadStart(s1));
t1.Priority = ThreadPriority.Highest;
t1.Start();

Thread t2= new Thread(new ThreadStart(s2));
t2.Priority = ThreadPriority.BelowNormal;
t2.Start();

Thread t3= new Thread(new ThreadStart(s3));
t3.Priority = ThreadPriority.BelowNormal;
t3.Start();

Thread t4= new Thread(new ThreadStart(s4));
t4.Priority = ThreadPriority.BelowNormal;
t4.Start();
}
}
}
catch (Exception err)
{
errMessage(err.Message,"timerStart_Tick");
}
}
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
我的CODE是这样的(应该怎么改呢):
void timerStart_Tick(object serder, EventArgs e)
{
try
{
string strNowTime = DateTime.Now.ToString("HHmmss");
if (strAppRunStartTime == strNowTime)
{
Thread t1= new Thread(new ThreadStart(s1));
t1.Priority = ThreadPriority.Highest;
t1.Start();

Thread t2= new Thread(new ThreadStart(s2));
t2.Priority = ThreadPriority.BelowNormal;
t2.Start();

Thread t3= new Thread(new ThreadStart(s3));
t3.Priority = ThreadPriority.BelowNormal;
t3.Start();

Thread t4= new Thread(new ThreadStart(s4));
t4.Priority = ThreadPriority.BelowNormal;
t4.Start();
}
}
}
catch (Exception err)
{
errMessage(err.Message,"timerStart_Tick");
}
}
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
Efcndi ,希望你能够讲得更详细些.我不知道怎样在if(Start[0] && Finished[0])
之后再启动下一个线程!谢谢!
shiweifu 2008-01-05
  • 打赏
  • 举报
回复
关注
vwxyzh 2008-01-05
  • 打赏
  • 举报
回复
Thread t1 = new Thread(new ThreadStart(s1););
t1.Start();
t1.Join();
Thread t2 = new Thread(new ThreadStart(s2));
t2.Start();
t2.Join();
Thread t3 = new Thread(new ThreadStart(s3));
t3.Start();
t3.Join();
Thread t4 = new Thread(new ThreadStart(s4));
t4.Start();
t4.Join();
Efcndi 2008-01-05
  • 打赏
  • 举报
回复

int ThreadCount = 4;
bool[] Started = new bool[] { false, false, false, false };
bool[] Finished = new bool[] { false, false, false, false };

T1()
{
//after start
Started[0] = true;

//before
Finished[0] = true;
}

"我怎么样去判断T1是否运行结束呢"
Main()
{
if(Started[0] && !Finished[0])
{
...
}
else if(Start[0] && Finished[0])
{
...
}
}
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
哈哈....大家是不是去吃饭去了呢?
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
现在我把线程的级别分别设置如下,问题还是没有解决:
Thread t1= new Thread(new ThreadStart(s1););
t1.Priority = ThreadPriority.Highest;
t1.Start();

Thread t2=new Thread(new ThreadStart(s2));
t2.Priority=ThreadPriority.BelowNormal;
t2.Start();

Thread t3=new Thread(new ThreadStart(s3));
t3.Priority=ThreadPriority.BelowNormal;
t3.Start();

Thread t4= new Thread(new ThreadStart(s4));
t4.Priority = ThreadPriority.BelowNormal;
t4.Start();
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
问题更正,标题所提到的进程改为线程.因为一时急,所在将线程写成进程,谢谢各位!
cxygoo 2008-01-05
  • 打赏
  • 举报
回复
我觉得最好的方法就是用MessageQ来做进程队列,用Windows的东西去管理进程,绝对没有问题的
富莱工作室 2008-01-05
  • 打赏
  • 举报
回复
好象qthai说得没错啊

Process t1,t2,t3,t4;
t1.Start();
t1.WaitForExit();
t2.Start();
t2.WaitForExit();
t3.Start();
t3.WaitForExit();
t4.Start();
t4.WaitForExit();

不就是你想要的按顺序执行?
当然这些代码最好放在辅助线程中
haiwangstar 2008-01-05
  • 打赏
  • 举报
回复
你的进程是WIN32进程,还是.net进程,如果是.net进程,会有较好的解决方案。如果是WIN32进程也有好的办法。要同步。
taiyangyu119 2008-01-05
  • 打赏
  • 举报
回复
如果我是new Thread(new ThreadStart(T1)).Start()这样开始一个进程,那我怎么样去判断T1是否运行结束呢?请详解,谢谢!
你要的是进程还是线程?按你这句说的是线程,你可以使用线程优先级来实现,高优先级的先执行,完成后自动执行次级优先级
taiyangyu119 2008-01-05
  • 打赏
  • 举报
回复
ls,我不是高手,lz要的是不同进程的执行,貌似不同进程之间不能用线程同步吧
qinxinfo 2008-01-05
  • 打赏
  • 举报
回复
用线程同步嘛,T1运行完就发信号给T2,然后T2发T3,T3发T4.
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
taiyangyu119 ,如果我是new Thread(new ThreadStart(T1)).Start()这样开始一个进程,那我怎么样去判断T1是否运行结束呢?请详解,谢谢!
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
dmhaifeng ,你的思路不错,只运行部分进程(T1,T2),而(T3,T4...)没有运行.程序会出现问题.
taiyangyu119 2008-01-05
  • 打赏
  • 举报
回复
设置个守护进程行不,判断进程列表里存在T1与否,如果不存在就运行T2,......
dmhaifeng 2008-01-05
  • 打赏
  • 举报
回复
貌似T1T2T3T4各进度运行的时间不确定
chouglingy 2008-01-05
  • 打赏
  • 举报
回复
qthai ,如果我的上一个进程还没有运行完成,就执行process[i-1].WaitForExit().这样不行,因为我的下一个进程运行的前提是必须上一个进程成功完成后才行的!谢谢!
加载更多回复(2)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧