我有一个窗口表格,利用同一方案(电话方案,任何次数)提供多种假释申请。
process.start().
我正在寻找一种办法,确定申请的具体操作,并清白地加以杀害(即清理了第5个方案进程,但留下了所有其他进程)。 我能够确定每个不同的方案过程。 通过程序启动时发放的婴儿,但我无法通过呼吁以外的任何方式结束申请。
process.kill()
未对申请进行清理。
我认为我不能使用
process.CloseMainWindow()
由于申请没有窗户(它通过有背景的青少年经营)。 在我从正在展开的进程清单中选择将这一进程杀死之后,我期待着在我的全球倡议中点击一个纽子,以此来杀害进程。
我之所以需要,是因为我需要结束每个进程的所有线索和未决方面,然后才能结束。
我将每个新进程确定如下:
Process process = new Process();
process.StartInfo = info;
ExecutionDetails details = new ExecutionDetails(run_id, process, info, session_type, strategy_type, name, ExecutionViewModel);
lock (_runs)
_runs.Add(run_id, details); // will throw on Add if duplicate id, prevent duplicate
ExecutionViewModel.NewRun(details); // add to the view model
process.Start();
如果有的话,则是一个确定每个进程的统一数据库。
在整整整整类中,我有通过指挥程序实施的法典,而这种程序只是通过指挥程序启动(例如电话方案、提供组合变量等)。
是否有办法可以干净地结束这些进程? 我认为,在我想要杀手的时候,有一个叫作的事件可能奏效,但迄今为止,由于我无法具体说明我想结束哪些进程,我一直未能找到这一想法。
** 本文件迟交。 EDIT——我处理我试图冒犯但并未奏效的事件的守则。
主要窗口
public void KillOne() {
foreach (var details in _runs.Values) {
if(details.IsSelected) {
StrategyStateManager.SessionClosed(this, details.RunId);
} } }
《战略》中的法典 (用于持有可变数和用于方案的活动的中产阶级)
public delegate void StrategyCloseEventHandler(object sender, StrategyCloseEventArgs e);
public static void SessionClosed(object sender, Guid id)
{
if(CloseSession != null)
CloseSession(sender, new StrategyCloseEventArgs(id));
}
public class StrategyCloseEventArgs : EventArgs
{
private readonly Guid id;
public StrategyCloseEventArgs(Guid run_id)
{
id = run_id;
}
public Guid GetRunID()
{
return id;
}
}
正在由主要窗口启动的法典
StrategyStateManager.CloseSession += (closeStrategy);
void closeStrategy(object sender, StrategyCloseEventArgs e)
{
if (e.GetRunID() == run_id)
{
strategy.cleanupForShutdown();
DBSaverSimple.shutdownAll();
logger.Warn("Simulation run stopped by user");
}
}