Settings.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Configuration;
  2. using System.IO;
  3. namespace PDF_Master.Properties {
  4. // 通过此类可以处理设置类的特定事件:
  5. // 在更改某个设置的值之前将引发 SettingChanging 事件。
  6. // 在更改某个设置的值之后将引发 PropertyChanged 事件。
  7. // 在加载设置值之后将引发 SettingsLoaded 事件。
  8. // 在保存设置值之前将引发 SettingsSaving 事件。
  9. internal sealed partial class Settings {
  10. public Settings() {
  11. // // 若要为保存和更改设置添加事件处理程序,请取消注释下列行:
  12. //
  13. // this.SettingChanging += this.SettingChangingEventHandler;
  14. //
  15. this.SettingsSaving += this.SettingsSavingEventHandler;
  16. //
  17. }
  18. private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
  19. // 在此处添加用于处理 SettingChangingEvent 事件的代码。
  20. }
  21. private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
  22. // 在此处添加用于处理 SettingsSaving 事件的代码。
  23. try
  24. {
  25. //判断配置文件是否可写
  26. var filepath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
  27. if (isFileLocked(filepath))
  28. {
  29. e.Cancel = true;
  30. }
  31. }
  32. catch
  33. {
  34. }
  35. }
  36. /// <summary>
  37. /// 判断文件是否被占用
  38. /// </summary>
  39. /// <param name="pathName"></param>
  40. /// <returns></returns>
  41. public static bool isFileLocked(string pathName)
  42. {
  43. try
  44. {
  45. if (!File.Exists(pathName))
  46. {
  47. return false;
  48. }
  49. using (var fs = new FileStream(pathName, FileMode.Open, FileAccess.Read, FileShare.None))
  50. {
  51. //判断是否可以成功打开并关闭,如果能够成功打开关闭,则表示没有被占用
  52. fs.Close();
  53. }
  54. }
  55. catch
  56. {
  57. return true;
  58. }
  59. return false;
  60. }
  61. }
  62. }