zoukankan      html  css  js  c++  java
  • [导入]Process.Start容易忽视的一个问题

    请谨慎使用Process.Start(path),尽量使用Process.Start(ProcessStartInfo),这样可用保证代码的稳定性。

    Process.Start(path)在启动一个新的进程时非常方便,但往往我们会忽视一个小的细节,不知道当前进程的WorkingDirectory。用Reflector跟踪了一下Process.Start的原理,简单的说就是Process.Start(path)会先根据path新建一个ProcessStartInfo,然后调用Process.Start(ProcessStartInfo),在Process.Start(ProcessStartInfo) 中系统会默认去检查WorkingDirectory,如果没有手动设置的话,则系统默认Environment.CurrentDirectory为ProcessStartInfo的WorkingDirectory,问题容易在这里发生。如果你用光盘启动一个程序(譬如Setup.exe),然后使用Process.Start启动另一个程序(譬如A.exe)然后退出Setup.exe,此时Environment.CurrentDirectory默认是光盘所在路径,那么如果再在A.exe放置一个linkbutton(目的是使用Process.Start开启一个新的进程),点击Linkbutton,如果在点击之前你弹出了光盘,那么问题就会出现,Process.Start(path)会去检查当前的Environment.CurrentDirectory(也就是ProcessStartInfo的WorkingDirectory),而光盘已经弹出,此时操作系统会提示你插入光盘。简单的说就是Process.Start(path)不能设置WorkingDirectory,是的WorkingDirectory变得不可控,容易导致代码不稳定。不知这个问题说清楚了没有,希望对有缘的人有所帮助。


    文章来源:http://ejimgao.blog.163.com/blog/static/42030016200782703154796
  • 相关阅读:
    06 继承与多态
    动手动脑 4 String 类
    字串加密
    课后作业(查询类对象创建个数)
    动手动脑 3 类与对象
    动手动脑 (第二次)
    IOS 网络判断
    ios常用的几个动画代码
    iOS Get方式带中文不能请求网络
    UILabel Text 加下划线
  • 原文地址:https://www.cnblogs.com/gaomin/p/1294123.html
Copyright © 2011-2022 走看看