本文整理汇总了C#中Composite.Start方法的典型用法代码示例。如果您正苦于以下问题:C# Composite.Start方法的具体用法?C# Composite.Start怎么用?C# Composite.Start使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Composite
的用法示例。
在下文中一共展示了Composite.Start方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Start
public static void Start(Func<Object,Task<bool>> task, Func<object,bool> stopCondition = null)
{
var isStarted = false;
Worker.Start(() =>
{
using (new MemoryHelper())
{
try
{
if (!isStarted)
{
Logger.Log("Starting new Bot Thread Id={0}", Thread.CurrentThread.ManagedThreadId);
_logic = new ActionRunCoroutine(task);
_logic.Start(null);
isStarted = true;
}
Tick();
}
catch (InvalidOperationException ex)
{
Logger.LogDebug("CheckInCoroutine() Derp {0}", ex);
}
}
if (stopCondition != null && stopCondition.Invoke(null))
{
Logger.Log("Bot Thread Finished Id={0}", Thread.CurrentThread.ManagedThreadId);
return true;
}
return false;
});
}
示例2: Tick
private static void Tick(Composite tree)
{
if (tree.LastStatus != RunStatus.Running)
tree.Start(null);
if (tree.Tick(null) != RunStatus.Running)
tree.Stop(null);
}
示例3: WalkTree
private static void WalkTree(Composite root, object rootContext = null)
{
// This function is meant as an EXAMPLE ONLY!
// It is not the best way to handle walking the tree, but will suffice for simple usages.
// Start must always be called first. Typically the root behavior will have a null context. Change if needed.
root.Start(rootContext);
// Run the tree forever...
while (true)
{
try
{
root.Tick(null);
}
catch (ThreadAbortException)
{
// Assuming we wanted this, make the tree stop walking, regardless of where it is.
break;
}
catch (Exception ex)
{
Console.WriteLine(ex);
// Handle this exception, either stop the tree, or just eat it and continue.
}
// If we're still running the current composite, then we don't need to reset, we want the tree to pick up
// where it left off last tick.
if (root.LastStatus != RunStatus.Running)
{
// Reset the tree, and begin the execution all over...
root.Stop(rootContext);
root.Start(rootContext);
}
// Change/remove, do whatever you want. This is an example remember!
Thread.Sleep(10);
}
root.Stop(rootContext);
}
示例4: OnEnable
public override void OnEnable()
{
try {
_root = CreateBehaviorLogic();
_root.Start(null);
CustomBlacklist.SweepTimer();
Lua.Events.AttachEvent("UI_ERROR_MESSAGE", HandleErrorMessage);
base.OnEnable();
} catch(Exception e) {
CustomNormalLog("Could not initialize. Message = " + e.Message + " Stacktrace = " + e.StackTrace);
} finally {
CustomNormalLog("Initialization complete.");
}
}