common/Utils/TaskExec/TaskExec.cs
2026-04-23 17:50:07 +02:00

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(); });
}
}
}