C#进程。意外打开多个PDF

C#进程。意外打开多个PDF,c#,pdf,process,C#,Pdf,Process,我有一个程序,扫描文件条形码,然后允许用户点击一个链接,打开一个与条形码相关的PDF。我的程序运行得很好,但是我在代码中遇到了一个bug(?),每隔一段时间,系统就会多次(5+)打开PDF,而且看起来不一致。我对完全重写代码犹豫不决,因为它实际上正在工作,关闭多个窗口很不方便。我认为导致问题的方法如下。任何帮助都将不胜感激,因为我不知道从哪里开始 private void dgDisplay_CellContentClick(object sender, DataGridViewCellEv

我有一个程序,扫描文件条形码,然后允许用户点击一个链接,打开一个与条形码相关的PDF。我的程序运行得很好,但是我在代码中遇到了一个bug(?),每隔一段时间,系统就会多次(5+)打开PDF,而且看起来不一致。我对完全重写代码犹豫不决,因为它实际上正在工作,关闭多个窗口很不方便。我认为导致问题的方法如下。任何帮助都将不胜感激,因为我不知道从哪里开始

private void dgDisplay_CellContentClick(object sender,   DataGridViewCellEventArgs e)
    {
        id = (int)comboBox1.SelectedValue;
        string ImagePath = getImagePath(id);
        string filename = "";

        if (e.ColumnIndex == 1)
        {
            filename = dgDisplay[e.ColumnIndex, e.RowIndex].Value.ToString();
            filename = @ImagePath + filename + ".tif";
            if (File.Exists(filename))
            {
                Process.Start(filename);
            }
            else
            {
                MessageBox.Show(filename);
            }
        }
    }

我看不出您的代码有任何明显的错误,但我会首先尝试确定事件是否被多次触发,或者Process.start调用是否实际启动了几个pdf读取器。在Process.Start调用之前使用一个简单的messagebox就可以了。您还可以设置一个变量来指示进程已启动,选中时,如果进程已驻留在内存中,则跳过启动进程。