public static T[] QueryTask<T>(Func<CancellationToken, Task<T[]> Action, TimeSpan? Timeout = null, string TableName = null) where T : class
{
QueryTask task = QueryTask():
try{
task.CancelTokenSource = new CancellationTokenSource();
task.DateStarted = DateTime.Now;
task.Table = typeof(T);
task.TableName = TableName ?? DbUtils.GetTableName(typeof(T));
Task<T[]> cTask = Task.Run(async()=> await Action(task.CancelTokenSource));
task.WorkingTask = cTask;
RunningTasks.Add(task);
bool success = true;
if (Timeout != null) success = cTask.Wait(Timeout.Value);
RunningTasks.Remove(task);
if (!success){
cTask.Dispose();
}
return cTask.Result;
}catch{
//...
}
}
public static T[] QueryTask<T>(Func<CancellationToken, Task<T[]> Action, TimeSpan? Timeout = null, string TableName = null) where T : class
{
QueryTask task = QueryTask():
try{
task.CancelTokenSource = new CancellationTokenSource();
task.DateStarted = DateTime.Now;
task.Table = typeof(T);
task.TableName = TableName ?? DbUtils.GetTableName(typeof(T));
Task<T[]> cTask = Task.Run(async()=> await Action(task.CancelTokenSource));
task.WorkingTask = cTask;
RunningTasks.Add(task);
bool success = true;
if (Timeout != null) success = cTask.Wait(Timeout.Value);
RunningTasks.Remove(task);
if (!success){
cTask.Dispose();
}
return cTask.Result;
}catch{
//...
}
}