就是电脑上已经有一个程序A,能否用C#写个程序用来实现当A出现问题了后就重启A。
29 个解决方案
#1
写个服务
#2
写个监控程序,用杀不死的服务来包装
#3
具体如何实现,有代码吗?
#4
没有这方面的具体代码,但相信很简单吧
#5
可以 Process监视进程
#6
System.Process下面 自己翻MSDN吧
#7
说错了
System.Diagnostics.Process
System.Diagnostics.Process
#8
你可以在程序崩溃推出之前,在Schedule里加一个计划任务,然后程序死掉,计划任务执行,程序就又活过来了
以上内容,纯属虚构,如有雷同,纯属巧合
以上内容,纯属虚构,如有雷同,纯属巧合
#9
学习单片机编程上的方法,设一个看门狗,定时喂狗,不喂就杀死那个程序的进程,然后再执行...
#10
另外写一个应用程序或windows服务来定时扫描A程序进程,如果发现该程序有问题就进行操作,比如杀除A,再重新启动A。这些代码都比较容易实现,不过需要定制一个契约,怎么样让B发现A运行有异常。
简单的实现可以在A中定时的向外部存储(比如文件或数据库)记录运行时间或状态,由B定时读取记录的数据进行分析,然后控制程序A进行下一步的动作。
B简单的实现可以实用计划任务。
简单的实现可以在A中定时的向外部存储(比如文件或数据库)记录运行时间或状态,由B定时读取记录的数据进行分析,然后控制程序A进行下一步的动作。
B简单的实现可以实用计划任务。
#11
同意楼上的,契约就可以用楼上的楼上担的定时喂狗
#12
mark
#13
定时向A发送信息,如果没有回应,kill了
#14
try catch
然后在异常中统一用Application.Restart
然后在异常中统一用Application.Restart
#15
根据线程表现状态用另外线程管理杀死重启
#16
try catch
然后在异常中统一用Application.Restart
还没异常呐。。。
然后在异常中统一用Application.Restart
还没异常呐。。。
#17
是出现了问题才重启,你可以造一个异常出来,测试一下。
#18
写一个监控程序,在目标程序意外停止后,立即激活它
#19
做个service监控,
#20
判断程序是否死了?
必须订制一个标准,
比如多少秒没响应就杀死他
不过有些时候程序在进行大规模运算时
cpu 100 一段时间也不是死掉了,如果这个时候杀死他就不对了。
还有 如果某个线程 死掉了
主线程还是可以响应的!
必须订制一个标准,
比如多少秒没响应就杀死他
不过有些时候程序在进行大规模运算时
cpu 100 一段时间也不是死掉了,如果这个时候杀死他就不对了。
还有 如果某个线程 死掉了
主线程还是可以响应的!
#21
to:wongjay() ( 一级(初级))
看门狗很有趣
以前没有想过
嘿嘿
看门狗很有趣
以前没有想过
嘿嘿
#22
写个监控程序,同时你的A程序中设立一个通讯机制,如果你的监控程序在若干长时间爱探测不到回应的话,就认为是死了,清除出去,再次启动它
#23
服务程序监控A程序进程,A有问题时杀除并重启A。
应该不难,主要看你以什么作为A死掉或有问题的对象或状态来检查了。
应该不难,主要看你以什么作为A死掉或有问题的对象或状态来检查了。
#24
只有有窗口的应用程序才能判断是否响应,没有窗口的应用程序一律返回true
#25
不知道啊
#26
都没给 代码 谈理论我会
#27
首先判断某程序是不是停止响应,然后重新启动它吧?
Process[] ps=Process.GetProcesses();
//如果是指定进程可以用Process.GetProcessesByName("yourprocessname")
foreach(Process p in ps)
{
if(!p.Responding)
//根据p.MainModule.FileName重新用Process启动它
}
不知道楼主是不是这个意思?
Process[] ps=Process.GetProcesses();
//如果是指定进程可以用Process.GetProcessesByName("yourprocessname")
foreach(Process p in ps)
{
if(!p.Responding)
//根据p.MainModule.FileName重新用Process启动它
}
不知道楼主是不是这个意思?
#28
判断一个进程是不是停止响应方法很多,比如SendMessageTimeout发送WM_NULL消息==
#29
方法很多,看你如何试想
#1
写个服务
#2
写个监控程序,用杀不死的服务来包装
#3
具体如何实现,有代码吗?
#4
没有这方面的具体代码,但相信很简单吧
#5
可以 Process监视进程
#6
System.Process下面 自己翻MSDN吧
#7
说错了
System.Diagnostics.Process
System.Diagnostics.Process
#8
你可以在程序崩溃推出之前,在Schedule里加一个计划任务,然后程序死掉,计划任务执行,程序就又活过来了
以上内容,纯属虚构,如有雷同,纯属巧合
以上内容,纯属虚构,如有雷同,纯属巧合
#9
学习单片机编程上的方法,设一个看门狗,定时喂狗,不喂就杀死那个程序的进程,然后再执行...
#10
另外写一个应用程序或windows服务来定时扫描A程序进程,如果发现该程序有问题就进行操作,比如杀除A,再重新启动A。这些代码都比较容易实现,不过需要定制一个契约,怎么样让B发现A运行有异常。
简单的实现可以在A中定时的向外部存储(比如文件或数据库)记录运行时间或状态,由B定时读取记录的数据进行分析,然后控制程序A进行下一步的动作。
B简单的实现可以实用计划任务。
简单的实现可以在A中定时的向外部存储(比如文件或数据库)记录运行时间或状态,由B定时读取记录的数据进行分析,然后控制程序A进行下一步的动作。
B简单的实现可以实用计划任务。
#11
同意楼上的,契约就可以用楼上的楼上担的定时喂狗
#12
mark
#13
定时向A发送信息,如果没有回应,kill了
#14
try catch
然后在异常中统一用Application.Restart
然后在异常中统一用Application.Restart
#15
根据线程表现状态用另外线程管理杀死重启
#16
try catch
然后在异常中统一用Application.Restart
还没异常呐。。。
然后在异常中统一用Application.Restart
还没异常呐。。。
#17
是出现了问题才重启,你可以造一个异常出来,测试一下。
#18
写一个监控程序,在目标程序意外停止后,立即激活它
#19
做个service监控,
#20
判断程序是否死了?
必须订制一个标准,
比如多少秒没响应就杀死他
不过有些时候程序在进行大规模运算时
cpu 100 一段时间也不是死掉了,如果这个时候杀死他就不对了。
还有 如果某个线程 死掉了
主线程还是可以响应的!
必须订制一个标准,
比如多少秒没响应就杀死他
不过有些时候程序在进行大规模运算时
cpu 100 一段时间也不是死掉了,如果这个时候杀死他就不对了。
还有 如果某个线程 死掉了
主线程还是可以响应的!
#21
to:wongjay() ( 一级(初级))
看门狗很有趣
以前没有想过
嘿嘿
看门狗很有趣
以前没有想过
嘿嘿
#22
写个监控程序,同时你的A程序中设立一个通讯机制,如果你的监控程序在若干长时间爱探测不到回应的话,就认为是死了,清除出去,再次启动它
#23
服务程序监控A程序进程,A有问题时杀除并重启A。
应该不难,主要看你以什么作为A死掉或有问题的对象或状态来检查了。
应该不难,主要看你以什么作为A死掉或有问题的对象或状态来检查了。
#24
只有有窗口的应用程序才能判断是否响应,没有窗口的应用程序一律返回true
#25
不知道啊
#26
都没给 代码 谈理论我会
#27
首先判断某程序是不是停止响应,然后重新启动它吧?
Process[] ps=Process.GetProcesses();
//如果是指定进程可以用Process.GetProcessesByName("yourprocessname")
foreach(Process p in ps)
{
if(!p.Responding)
//根据p.MainModule.FileName重新用Process启动它
}
不知道楼主是不是这个意思?
Process[] ps=Process.GetProcesses();
//如果是指定进程可以用Process.GetProcessesByName("yourprocessname")
foreach(Process p in ps)
{
if(!p.Responding)
//根据p.MainModule.FileName重新用Process启动它
}
不知道楼主是不是这个意思?
#28
判断一个进程是不是停止响应方法很多,比如SendMessageTimeout发送WM_NULL消息==
#29
方法很多,看你如何试想