Utility.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. 
  2. using System.IO;
  3. using System.Diagnostics;
  4. using System;
  5. using System.Timers;
  6. namespace Uninpho.Tools
  7. {
  8. public class Utility
  9. {
  10. /// <summary>
  11. /// 在指定时间过后执行指定的表达式
  12. /// </summary>
  13. /// <param name="interval">事件之间经过的时间(以毫秒为单位)</param>
  14. /// <param name="action">要执行的表达式</param>
  15. public static void SetTimeout(double interval, Action action)
  16. {
  17. System.Timers.Timer timer = new System.Timers.Timer(interval);
  18. timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
  19. {
  20. timer.Enabled = false;
  21. action();
  22. };
  23. timer.Enabled = true;
  24. }
  25. /// <summary>
  26. /// 在指定时间周期重复执行指定的表达式
  27. /// </summary>
  28. /// <param name="interval">事件之间经过的时间(以毫秒为单位)</param>
  29. /// <param name="action">要执行的表达式</param>
  30. public static void SetInterval(double interval, Action<ElapsedEventArgs> action)
  31. {
  32. System.Timers.Timer timer = new System.Timers.Timer(interval);
  33. timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
  34. {
  35. action(e);
  36. };
  37. timer.Enabled = true;
  38. }
  39. /// <summary>
  40. /// 获取配置文件的路径
  41. /// </summary>
  42. ///<returns></returns>
  43. public static string GetTemPath(string dbPath)
  44. {
  45. string temPath = Path.Combine(Path.GetDirectoryName(dbPath),"temp");
  46. if (!Directory.Exists(temPath))
  47. {
  48. Directory.CreateDirectory(temPath);
  49. File.SetAttributes(temPath, FileAttributes.Hidden | FileAttributes.System);
  50. }
  51. return temPath;
  52. }
  53. /// <summary>
  54. /// 获取Assembly的运行路径
  55. /// </summary>
  56. ///<returns></returns>
  57. public static string GetAssemblyPath()
  58. {
  59. string _CodeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
  60. _CodeBase = _CodeBase.Substring(8, _CodeBase.Length - 8); // 8是file:// 的长度
  61. string[] arrSection = _CodeBase.Split(new char[] { '/' });
  62. string _FolderPath = "";
  63. for (int i = 0; i < arrSection.Length - 1; i++)
  64. {
  65. _FolderPath += arrSection[i] + "/";
  66. }
  67. return _FolderPath;
  68. }
  69. /// <summary>
  70. /// 获取发布的数据路径
  71. /// </summary>
  72. ///<returns></returns>
  73. public static string GetDataPath()
  74. {
  75. string tileDataDir = "";
  76. string _CodeBase = GetAssemblyPath();
  77. tileDataDir = System.IO.Path.Combine(System.IO.Directory.GetParent(_CodeBase).Parent.FullName, "data");
  78. if (!System.IO.Directory.Exists(tileDataDir))
  79. Directory.CreateDirectory(tileDataDir);
  80. return tileDataDir;
  81. }
  82. /// <summary>
  83. /// 调用外部Exe
  84. /// </summary>
  85. /// <param name="exePath"></param>
  86. /// <param name="parameters"></param>
  87. public static Process CallExe(string exePath, string parameters)
  88. {
  89. Process process = new System.Diagnostics.Process();
  90. process.StartInfo.FileName = exePath;
  91. process.StartInfo.Arguments = parameters;
  92. process.StartInfo.UseShellExecute = false;
  93. process.StartInfo.CreateNoWindow = true;
  94. process.StartInfo.RedirectStandardOutput = false;
  95. process.EnableRaisingEvents = true;
  96. //process.Start();
  97. return process;
  98. }
  99. /// <summary>
  100. /// 调用外部Exe
  101. /// </summary>
  102. /// <param name="exePath"></param>
  103. /// <param name="parameters"></param>
  104. public static string[] GetFiles(string dir, string filter,SearchOption option = SearchOption.TopDirectoryOnly)
  105. {
  106. return Directory.GetFiles(dir, filter, option);
  107. }
  108. }
  109. }