让启动项管理进行启动
可以让业务进行重写逻辑
This commit is contained in:
@@ -431,7 +431,7 @@ namespace dotnetCampus.ApplicationStartupManager
|
|||||||
return wrapper;
|
return wrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
wrapper = new StartupTaskWrapper(startupTaskKey);
|
wrapper = new StartupTaskWrapper(startupTaskKey, this);
|
||||||
if (StartupTaskWrappers.TryAdd(startupTaskKey, wrapper))
|
if (StartupTaskWrappers.TryAdd(startupTaskKey, wrapper))
|
||||||
{
|
{
|
||||||
return wrapper;
|
return wrapper;
|
||||||
@@ -453,5 +453,11 @@ namespace dotnetCampus.ApplicationStartupManager
|
|||||||
|
|
||||||
private static string StartupTypeToKey(Type type)
|
private static string StartupTypeToKey(Type type)
|
||||||
=> type.Name.Remove(type.Name.Length - "startup".Length);
|
=> type.Name.Remove(type.Name.Length - "startup".Length);
|
||||||
|
|
||||||
|
protected virtual Task<string> ExecuteStartupTaskAsync(StartupTaskBase startupTask, IStartupContext context,
|
||||||
|
bool uiOnly)
|
||||||
|
{
|
||||||
|
return startupTask.JoinAsync(context, uiOnly);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ namespace dotnetCampus.ApplicationStartupManager
|
|||||||
[DebuggerDisplay("{StartupTaskKey}:{IsVisited},{VisitedFinishTime}")]
|
[DebuggerDisplay("{StartupTaskKey}:{IsVisited},{VisitedFinishTime}")]
|
||||||
internal class StartupTaskWrapper : IStartupTaskWrapper
|
internal class StartupTaskWrapper : IStartupTaskWrapper
|
||||||
{
|
{
|
||||||
|
private readonly StartupManager _manager;
|
||||||
public HashSet<string> FollowTasks { get; private set; } = new HashSet<string>();
|
public HashSet<string> FollowTasks { get; private set; } = new HashSet<string>();
|
||||||
public HashSet<string> Dependencies { get; private set; } = new HashSet<string>();
|
public HashSet<string> Dependencies { get; private set; } = new HashSet<string>();
|
||||||
|
|
||||||
@@ -24,8 +25,9 @@ namespace dotnetCampus.ApplicationStartupManager
|
|||||||
public bool UIOnly { get; internal set; }
|
public bool UIOnly { get; internal set; }
|
||||||
public StartupCriticalLevel CriticalLevel { get; set; }
|
public StartupCriticalLevel CriticalLevel { get; set; }
|
||||||
|
|
||||||
public StartupTaskWrapper(string startupTaskKey)
|
public StartupTaskWrapper(string startupTaskKey, StartupManager manager)
|
||||||
{
|
{
|
||||||
|
_manager = manager;
|
||||||
StartupTaskKey = startupTaskKey;
|
StartupTaskKey = startupTaskKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +45,7 @@ namespace dotnetCampus.ApplicationStartupManager
|
|||||||
//todo Tracer.Info($"[Startup]关键节点:{StartupTaskKey}开始执行");
|
//todo Tracer.Info($"[Startup]关键节点:{StartupTaskKey}开始执行");
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = await TaskBase.JoinAsync(context, UIOnly);
|
var result = await _manager.ExecuteStartupTaskAsync(TaskBase, context, UIOnly);
|
||||||
|
|
||||||
if (CriticalLevel == StartupCriticalLevel.Critical)
|
if (CriticalLevel == StartupCriticalLevel.Critical)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user