using System;
using System.Collections.Concurrent;
namespace OS.Common.Modules.AsynModule
{
///
/// 异步
///
public static class AsynUtil
{
private static readonly ConcurrentDictionary _asynDirs = new ConcurrentDictionary();//Dictionary();
///
/// 通过模块名称获取异步处理模块实例
///
///
///
public static IAsynBlock GetAsynBlock(string asynModule)
{
if (string.IsNullOrEmpty(asynModule))
asynModule = ModuleNames.Default;
if (_asynDirs.ContainsKey(asynModule))
return _asynDirs[asynModule];
var asyn = OsConfig.Provider.GetAsynBlock(asynModule) ?? new AsynBlock();
_asynDirs.TryAdd(asynModule,asyn);
return asyn;
}
///
/// 调用异步方法
///
///
///
///
/// 异步模块名称
///
public static bool Asyn(Action asynAction, T t,string moduleName=ModuleNames.Default)
{
return GetAsynBlock(moduleName).Asyn(asynAction, t);
}
}
}