48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
using System.Globalization;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Xylem.Common.Utils.TaskExec
|
|
{
|
|
/// <summary>
|
|
/// Task execution uses an initialization-, an execution-, an event-
|
|
/// and a finalization-routine.
|
|
/// </summary>
|
|
public class TaskExec
|
|
{
|
|
/// <summary>
|
|
/// Definition of thread call back function
|
|
/// </summary>
|
|
public delegate void ThreadCallbackFunction();
|
|
|
|
/// <summary>
|
|
/// A new task calling the init-, the cyclic execution and the final-function.
|
|
/// The task adjusts the current culture.
|
|
/// </summary>
|
|
/// <param name="initFn"></param>
|
|
/// <param name="execFn"></param>
|
|
/// <param name="finalFn"></param>
|
|
/// <param name="cultureInfo"></param>
|
|
/// <remarks date="2020-Dec-09" author="Thomas Wiedebusch">
|
|
/// - Initial.
|
|
/// </remarks>
|
|
public void NewTask(ThreadCallbackFunction initFn, ThreadCallbackFunction execFn,
|
|
ThreadCallbackFunction finalFn, CultureInfo cultureInfo)
|
|
{
|
|
Thread.CurrentThread.CurrentUICulture = cultureInfo;
|
|
Thread.CurrentThread.CurrentCulture = cultureInfo;
|
|
|
|
initFn?.Invoke();
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
Thread.CurrentThread.CurrentUICulture = cultureInfo;
|
|
Thread.CurrentThread.CurrentCulture = cultureInfo;
|
|
|
|
execFn?.Invoke();
|
|
|
|
Thread.Sleep(1000);
|
|
}).ContinueWith(delegate { finalFn?.Invoke(); });
|
|
}
|
|
}
|
|
}
|