using System; using System.ComponentModel; using System.Text; using System.Windows.Forms; using System.Threading; using System.Net.Sockets; using System.Net; namespace lab4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void computeButton_Click(object sender, EventArgs e) { int fig; try { fig = Int32.Parse(intTextBox1.Text); } catch (Exception) { MessageBox.Show("Wpisz jakąś liczbę!", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } backgroundWorker1.RunWorkerAsync(fig); computeButton.Enabled = false; intTextBox1.Enabled = false; } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; resultTextBox.Text = ((long)(e.UserState)).ToString(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; e.Result = fibonacci((int)e.Argument, worker); } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { resultTextBox.Text = e.Result.ToString(); computeButton.Enabled = true; intTextBox1.Enabled = true; try { TcpClient client = new TcpClient(); //IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3000); client.Connect(IPAddress.Parse("127.0.0.1"), 3000); NetworkStream clientStream = client.GetStream(); ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer = encoder.GetBytes(e.Result.ToString()); clientStream.Write(buffer, 0, buffer.Length); clientStream.Flush(); } catch (Exception) { MessageBox.Show("Nie ma servera :(", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } public long fibonacci(int n, BackgroundWorker worker) { long result = 1; long prev = 0; if (n == 0) result = 0; else if(n > 1) { long temp; for (int i = 2; i <= n; i++) { temp = result; result += prev; prev = temp; int percent = (int)((float)i/(float)n*100.0); worker.ReportProgress(percent, result); Thread.Sleep(200); } } return result; } } }