110,539
社区成员
发帖
与我相关
我的任务
分享
public List<TpDevice> GetDeviceListAll()
{
if (HI.Get<ISecurityImp>().CheckTicket())
{
var result = FactoryStartNew.StartNewThread<List<TpDevice>>(() => { return HI.Get<IBaseDataImp>().GetDeviceListAll(); });
return result;
}
return new List<TpDevice>();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SunCreate.Common.ComLib
{
/// <summary>
/// 2018-12-19 BY:Leon (勿修改其中代码)
/// </summary>
public class FactoryStartNew
{
private static log4net.ILog m_Log = log4net.LogManager.GetLogger(typeof(FactoryStartNew));
/// <summary>
/// 通过线程运行函数
/// </summary>
/// <param name="action">运行函数</param>
public static void StartNewThread(Action action)
{
System.Threading.Tasks.Task va = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
action();
}
catch (System.Exception ex)
{
m_Log.Error(ex);
}
})
.ContinueWith(o => { return; });
va.Wait();
}
/// <summary>
/// 通过线程运行函数
/// </summary>
/// <typeparam name="TResult">返回值类型</typeparam>
/// <param name="action">运行函数</param>
/// <returns>返回值</returns>
public static TResult StartNewThread<TResult>(Func<TResult> action)
{
try
{
TResult bRst;
System.Threading.Tasks.Task<TResult> va = System.Threading.Tasks.Task.Factory.StartNew<TResult>(() =>
{
return action();
})
.ContinueWith<TResult>(o => { return o.Result; });
bRst = va.Result;
return bRst;
}
catch (System.Exception ex)
{
m_Log.Error(ex);
return default(TResult);
}
}
}
}