工作中遇到客户想要自己替换软件Logo的问题,本身logo的获取方式最底层是这样的:
- string path = AppDomain.CurrentDomain.BaseDirectory + "Image\\" + name;
- if (File.Exists(path))
- {
- return new Bitmap(path);
- }
但是在软件运行时想要更改logo的文件,就会报"xxx正由另一进程使用,因此该进程无法访问该文件。"的错误。因为new Bitmap会一直占用该文件,改成这样就不会占用,可以在运行时修改logo了。
- Bitmap bitmap = null;
- string path =Path.Combine( GetWorkspace(), "Image", name);
- if (File.Exists(path))
- {
- Image img = Image.FromFile(path);
- bitmap = new Bitmap(img);
- img.Dispose();
- return bitmap;
- }