You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.5 KiB
C#

2 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow
{
public class BaseFlow
{
public string FlowName { get; set; }
protected bool b_IsRun = false;
protected bool b_IsStop = true;
private Task mainTask;
protected int stopWaitTime = 10;
protected int sleepTime = 10;
public BaseFlow() {
mainTask = new Task(task);
}
public virtual void Run()
{
}
private void task() {
while (b_IsRun)
{
if(b_IsStop)
{
Thread.Sleep(stopWaitTime);
continue;
}
Run();
Thread.Sleep(sleepTime);
}
}
public virtual void Stop()
{
b_IsStop = true;
}
public virtual void Quit()
{
if(mainTask!=null)
{
b_IsRun = false;
mainTask.Wait();
}
}
public virtual void Start()
{
if(mainTask!=null && (mainTask.Status== TaskStatus.Created || mainTask.Status== TaskStatus.WaitingToRun))
{
b_IsRun= true;
b_IsStop = false;
mainTask.Start();
}
else if(mainTask.Status== TaskStatus.Running)
{
b_IsStop = false;
}
}
}
}