public Core(string _basePath, int _creaVersion, string _appnameWithVersion, Program.ProgramSettings _ps) { //Coreが2回以上実体化されないことを保証する //2回以上呼ばれた際には例外が発生する Instantiate(); basepath = _basePath; databaseBasepath = Path.Combine(basepath, databaseDirectory); creaVersion = _creaVersion; appnameWithVersion = _appnameWithVersion; ps = _ps; }
public MainWindow(Core _core, Program.Logger _logger, Program.ProgramSettings _psettings, Program.ProgramStatus _pstatus, string _appname, string _version, string _appnameWithVersion, string _lisenceTextFilename, Assembly _entryAssembly, AssemblyName _entryAssemblyName, string _basepath, Process _currentProcess, Action<Exception, Program.ExceptionKind> __OnException, Func<byte[], Version, bool> __UpVersion, List<UnhandledExceptionEventHandler> _unhandledExceptionEventHandlers, List<DispatcherUnhandledExceptionEventHandler> _dispatcherUnhandledExceptionEventHandlers) { core = _core; logger = _logger; psettings = _psettings; pstatus = _pstatus; appname = _appname; version = _version; appnameWithVersion = _appnameWithVersion; lisenceTextFilePath = Path.Combine(_basepath, _lisenceTextFilename); entryAssembly = _entryAssembly; _OnException = __OnException; _UpVersion = __UpVersion; unhandledExceptionEventHandlers = _unhandledExceptionEventHandlers; dispatcherUnhandledExceptionEventHandlers = _dispatcherUnhandledExceptionEventHandlers; InitializeComponent(); Title = _appnameWithVersion; miFile.Header = "ファイル".Multilanguage(19) + "(_F)"; miClose.Header = "終了".Multilanguage(20) + "(_X)"; miTool.Header = "ツール".Multilanguage(48) + "(_T)"; miSettings.Header = "設定".Multilanguage(49) + "(_S)..."; miMining.Header = "採掘開始".Multilanguage(135) + "(_M)..."; miDebug.Header = "状況監視".Multilanguage(216) + "(_K)..."; miHelp.Header = "ヘルプ".Multilanguage(21) + "(_H)"; miAbout.Header = "CREAについて".Multilanguage(22) + "(_A)..."; core.iCreaNodeTest.ConnectionKeeped += (sender, e) => this.ExecuteInUIThread(() => tbKeepConnection.Text = "常時接続確立(同期未完了)".Multilanguage(277)); core.iCreaNodeTest.Syncronized += (sender, e) => this.ExecuteInUIThread(() => tbKeepConnection.Text = "常時接続確立(同期完了)".Multilanguage(278)); core.iCreaNodeTest.NewVersionDetected += (sender, e) => { }; core.iCreaNodeTest.NumOfConnectingNodesChanged += (sender, e) => this.ExecuteInUIThread(() => tbNumOfConnectingNodes.Text = "接続数:".Multilanguage(219) + core.iCreaNodeTest.NumOfConnectingNodes.ToString()); core.iCreaNodeTest.NumOfNodesChanged += (sender, e) => this.ExecuteInUIThread(() => tbNumOfNodes.Text = "ノード数:".Multilanguage(220) + core.iCreaNodeTest.NumOfNodes.ToString()); tbKeepConnection.Text = core.iCreaNodeTest.isKeepConnection ? "常時接続確立".Multilanguage(217) : "常時接続未確立".Multilanguage(218); tbNumOfConnectingNodes.Text = "接続数:".Multilanguage(219) + core.iCreaNodeTest.NumOfConnectingNodes.ToString(); tbNumOfNodes.Text = "ノード数:".Multilanguage(220) + core.iCreaNodeTest.NumOfNodes.ToString(); Action _UpdateserverStatus = () => { this.ExecuteInUIThread(() => { if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.NotRunning) { rServerStatus.Fill = System.Windows.Media.Brushes.Red; rServerStatus.ToolTip = "他ノードからの接続を受け入れることができません。".Multilanguage(221); } else if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.RunningButHaventAccepting) { rServerStatus.Fill = System.Windows.Media.Brushes.YellowGreen; rServerStatus.ToolTip = "他ノードからの接続がありません。".Multilanguage(222); } else if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.HaveAccepting) { rServerStatus.Fill = System.Windows.Media.Brushes.Blue; rServerStatus.ToolTip = "他ノードからの接続を確認しました。".Multilanguage(223); } }); }; core.iCreaNodeTest.ServerStatusChanged += (sender, e) => _UpdateserverStatus(); _UpdateserverStatus(); string instanceName = null; PerformanceCounter bytesSentPC = null; PerformanceCounter bytesReceivedPC = null; float bytesSent1 = 0.0F; float bytesReceived1 = 0.0F; int timeCounter = 0; string pidString = _currentProcess.Id.ToString(); timer = new Timer((obj) => { try { if (instanceName == null) instanceName = new PerformanceCounterCategory(".NET CLR Networking 4.0.0.0").GetInstanceNames().Where((elem) => elem.Contains(pidString)).FirstOrDefault(); if (instanceName == null) return; if (bytesSentPC == null) bytesSentPC = new PerformanceCounter(".NET CLR Networking 4.0.0.0", "Bytes Sent", instanceName, true); if (bytesReceivedPC == null) bytesReceivedPC = new PerformanceCounter(".NET CLR Networking 4.0.0.0", "Bytes Received", instanceName, true); timeCounter++; float bytesSent2 = bytesSentPC.NextValue(); float up = bytesSent2 / 1000; float upSpeed = (bytesSent2 - bytesSent1) / 1000; float upSpeedAverage = (bytesSent2 / timeCounter) / 1000; bytesSent1 = bytesSent2; float bytesReceived2 = bytesReceivedPC.NextValue(); float down = bytesReceived2 / 1000; float downSpeed = (bytesReceived2 - bytesReceived1) / 1000; float downSpeedAverage = (bytesReceived2 / timeCounter) / 1000; bytesReceived1 = bytesReceived2; this.ExecuteInUIThread(() => { tbCommunication.Text = string.Format("送速:{0:0.000}KB/s, 送量:{1:0.000}KB, 受速:{2:0.000}KB/s, 受量:{3:0.000}KB".Multilanguage(224), upSpeed, up, downSpeed, down); tbCommunication.ToolTip = string.Format("送信速度:{0:0.000}KB/s, 平均送信速度:{1:0.000}KB/s, 送信量:{2:0.000}KB, 受信速度:{3:0.000}KB/s, 平均受信速度:{4:0.000}KB/s, 受信量:{5:0.000}KB".Multilanguage(225), upSpeed, upSpeedAverage, up, downSpeed, downSpeedAverage, down); }); } catch (Exception) { //<未実装> } }, null, 0, 1000); }