示例#1
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (ethminer != null)
            {
                monitorOn = false;
                if (!ethminer.HasExited)
                {
                    //ethminer.CancelOutputRead();
                    ethminer.CloseMainWindow();
                    //ethminer.StandardInput.Write('\x3');
                    //ethminer.StandardInput.Flush();
                    //ethminer.StandardInput.Close();
                    ethminer.WaitForExit(20000);
                    if (!ethminer.HasExited)
                        ethminer.Kill();
                }
                ethminer.Dispose();
                ethminer = null;
                btnStart.Text = "Start";

                if (monitor != null && monitor.IsAlive)
                    monitor.Join(11000);
                return;
            }

            ethminer = new Process();
            //ethminer.OutputDataReceived += new DataReceivedEventHandler(EthminerDataReceived);
            //ethminer.ErrorDataReceived += dEthminerDataRecieved;

            ethminer.StartInfo.FileName = txtFileLocation.Text;
            ethminer.StartInfo.Arguments = "-F http://eth-us.suprnova.cc:3000/finibhire.Charon0/1 -G --farm-recheck 200 --opencl-device 0 --cl-extragpu-mem 1892 -v 9";
            ethminer.StartInfo.UseShellExecute = false;
            //ethminer.StartInfo.RedirectStandardInput = true;
            ethminer.StartInfo.RedirectStandardOutput = true;
            //ethminer.StartInfo.RedirectStandardError = true;
            //ethminer.StartInfo.CreateNoWindow = true;
            //ethminer.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            ethminer.Start();
            //ethminer.BeginOutputReadLine();
            //ethminer.BeginErrorReadLine();
            btnStart.Text = "Stop";

            Thread.Sleep(500);
            ethminer.SuspendProcess();
            EditEthMinerMemory();
            ethminer.ResumeProcess();

            monitorOn = true;
            monitor = new Thread(new ThreadStart(MonitorStart));
            monitor.Start();
        }