private async Task VisitEndEvent(TEndEvent element) { foreach (var eventDefinition in element.EventDefinition) { switch (eventDefinition) { case TTerminateEventDefinition terminateEvent: await VisitTerminateEvent(element, terminateEvent); return; } } _logger.LogWarning("End"); }
public static LoadResult LoadAPI(out Exception error) { lock (_Lock) { if (_LoadResult == LoadResult.NotLoaded) { _LoadException = null; var libPath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles, Environment.SpecialFolderOption.DoNotVerify), "Superluminal", "Performance", "API", "DLL", Environment.Is64BitProcess ? "x64" : "x86", "PerformanceAPI.dll" ); var hDll = LoadLibrary(libPath); if (hDll != IntPtr.Zero) { try { var getResult = PerformanceAPI_GetAPI(PERFORMANCEAPI_VERSION, out APIPointers); _SetCurrentThreadName = Marshal.GetDelegateForFunctionPointer <TSetCurrentThreadName>(APIPointers.pSetCurrentThreadName); _BeginEventWide = Marshal.GetDelegateForFunctionPointer <TBeginEventWide>(APIPointers.pBeginEventWide); _EndEvent = Marshal.GetDelegateForFunctionPointer <TEndEvent>(APIPointers.pEndEvent); _LoadResult = (getResult != 0) ? LoadResult.OK : LoadResult.InvalidVersion; } catch (Exception exc) { _LoadResult = LoadResult.UncaughtException; _LoadException = exc; } } else { _LoadResult = LoadResult.DllNotFound; } if (_LoadResult != LoadResult.OK) { Console.WriteLine($"Superluminal load result: {_LoadResult} error: {_LoadException}"); } Enabled = _LoadResult == LoadResult.OK; } error = _LoadException; return(_LoadResult); } }
private async Task VisitTerminateEvent(TEndEvent endEvent, TTerminateEventDefinition terminateEvent) { _logger.LogWarning("Terminate"); _terminateTaskCompletionSource.TrySetResult(default(object)); await VisitFlowNodes(GetParallelOutgoingNodes(endEvent)); }