Browse Source

RuntimeUtility:InBackground 增加重载,可指定延迟时常,类似 JS 的 setTimeout 方法。

master
王厅 1 month ago
parent
commit
a4efcb174e
  1. 19
      Apewer/RuntimeUtility.cs

19
Apewer/RuntimeUtility.cs

@ -629,6 +629,25 @@ namespace Apewer
return thread;
}
/// <summary>在后台线程中执行,指定 Try 将忽略 Action 抛出的异常。</summary>
/// <param name="delay">延迟的毫秒数。</param>
/// <param name="action">要执行的 Action。</param>
/// <param name="try">忽略 Action 抛出的异常。</param>
/// <remarks>对返回的 Thread 调用 Abort 可结束线程的执行。</remarks>
[MethodImpl(MethodImplOptions.NoInlining)]
public static Thread InBackground(int delay, Action action, bool @try = false)
{
if (action == null) return null;
var thread = new Thread(delegate (object v)
{
if (delay > 0) Thread.Sleep(delay);
Invoke(() => ((Action)v)(), @try);
});
thread.IsBackground = true;
thread.Start(action);
return thread;
}
/// <summary>启动线程,在新线程中执行。</summary>
/// <param name="action">要执行的 Action。</param>
/// <param name="background">设置线程为后台线程。</param>

Loading…
Cancel
Save