static Application() { string executingAssemblyFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string subfolder; if (Environment.Is64BitProcess) { subfolder = "x64"; } else { subfolder = "x32"; } string dllPath = Path.Combine(executingAssemblyFolder, subfolder); String currentPath = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process); dllPath = dllPath.Replace("/", "\\"); if (currentPath.Contains(dllPath) == false) { String newPath = currentPath + Path.PathSeparator + dllPath; Environment.SetEnvironmentVariable("PATH", newPath, EnvironmentVariableTarget.Process); } Thread.CurrentThread.Name = "Main Thread"; myTaskManager = new TaskManager(); myEventManager = new EventManager(); NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (var x in nics[0].GetIPProperties().UnicastAddresses) { if (x.Address.AddressFamily == AddressFamily.InterNetwork) { myUniqueId = (ulong)((int)x.Address.Address) << 32; break; } } myProcId = (uint)System.Diagnostics.Process.GetCurrentProcess().Id; myUniqueId = myUniqueId | (ulong)myProcId; myClock = TimeSource.newClock(); }