public static void ClassCleanup() { // Runs once after all tests in this class are executed. (Optional) // Not guaranteed that it executes instantly after all tests from the class. Console.WriteLine("ClassCleanup"); pathEngine.Dispose(); pathEngine = null; navMesh = null; }
public static void Main(string[] args) { Console.WriteLine("Hello World!"); Mutex mutex = new Mutex(); NavMesh navMesh = new NavMesh(); FindMyPath pathEngine = new FindMyPath(navMesh); Ticket ticket = new Ticket(navMesh.GetIndex(0, 0), navMesh.GetIndex(7, 7)); CancellationTokenSource cancelToken = new CancellationTokenSource(); Task <Ticket> task = pathEngine.FindPathAsync(ticket, cancelToken); task.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result Steps=" + previousTask.Result.Steps); Console.WriteLine("Result State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); Ticket ticket2 = new Ticket(navMesh.GetIndex(1, 1), navMesh.GetIndex(6, 6)); CancellationTokenSource cancelToken2 = new CancellationTokenSource(); Task <Ticket> task2 = pathEngine.FindPathAsync(ticket2, cancelToken2); task2.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result2 Steps=" + previousTask.Result.Steps); Console.WriteLine("Result2 State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); Ticket ticket3 = new Ticket(navMesh.GetIndex(1, 1), navMesh.GetIndex(6, 6)); CancellationTokenSource cancelToken3 = new CancellationTokenSource(); Task <Ticket> task3 = pathEngine.FindPathAsync(ticket3, cancelToken3); task3.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result3 Steps=" + previousTask.Result.Steps); Console.WriteLine("Result3 State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); //cancelToken.CancelAfter(TimeSpan.FromMilliseconds(1)); //Thread.Sleep(1000); pathEngine.CalcelAll(); Thread.Sleep(1000); pathEngine.Dispose(); }