繁体   English   中英

保存过程对象信息以在退出后使用

[英]Save Process Object Information for use after its exit

在我的C#Widows表单上,即使退出后,我也想利用Process对象信息,但是却遇到异常“系统进程已退出,因此请求的信息不可用”

到目前为止,我尝试将其保存为var并用ListView项对其进行标记,但仍然会引发相同的异常。

//ListView Parameters (omitted redundant ones)
Process currentProcess = Process.GetProcessById(Convert.ToInt32(processStringID);
newListViewItem.Tag = currentProcess;
listView.Items.Add(newListViewItem);

我有一个更改选定索引的事件,因此,当用户单击ListView项时,即使已退出该项,该项也应显示有关用该项标记的过程的信息。

private void listView_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {

            Process processItem = (Process)listView.SelectedItems[0].Tag;

            //Sample of getting process information (Error happens here)
            MessageBox.Show(processItem.Name + processItem.VersionInfo);

            } 

            catch (Exception ex)
            {
               throw ex;
            }
        }

Tldr; 我需要一种方法来保存整个Process对象,以便即使该进程已退出也可以在以后获取它的信息。 对于如何实现这一点,我持开放态度。 请协助我,因为我目前对编程的理解无法想到任何解决方案。

将其存储在会话中

要存储数据:

Session["process"] = processItem;

要从会话中提取数据:

var process = (Process)Session["process"]; // Don't forget to cast back to it's original type

即使您导航到其他页面,也可以使用数据,除非您手动将其删除。

更新:

由于问题起初不清楚。

使用静态类创建全局变量

public static class GlobalVar
{
    /// <summary>
    /// Global variable that is constant.
    /// </summary>
    public const string GlobalString = "Important Text";

    /// <summary>
    /// Static value protected by access routine.
    /// </summary>
    static int _globalValue;

    /// <summary>
    /// Access routine for global variable.
    /// </summary>
    public static int GlobalValue
    {
    get
    {
        return _globalValue;
    }
    set
    {
        _globalValue = value;
    }
    }

    /// <summary>
    /// Global static field.
    /// </summary>
    public static bool GlobalBoolean;
}

看到这个职位: http : //www.dotnetperls.com/global-variable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM