private async Task PerformSplit() { try { Trace.Indent(); var maxWordLength = int.Parse(IFdata.GetField("maxWordLength")); var probRatio = double.Parse(IFdata.GetField("probRatio")); var bemsRatio = double.Parse(IFdata.GetField("bemsRatio")); CHBsplit.Enabled = false; string fileName = "output.txt"; var encoding = Encoding.UTF8; using (var writer = new StreamWriter(fileName, false, encoding)) { TXBout.Clear(); var d = new SentenceSplitter.WordIdentifiedEventHandler((word) => { writer.WriteLine(word); TXBout.Invoke(new Action(() => { if (TXBout.TextLength < 10000) { TXBout.AppendText($"{word}\r\n"); if (TXBout.TextLength >= 10000) { TXBout.AppendText("......(Cut)\r\n"); } } })); }); var ss = new SentenceSplitter(trie, baseDataLength); try { ss.WordIdentified += d; Trace.WriteLine("Splitting..."); var mainInputs = string.IsNullOrWhiteSpace(TXBdata.Text) ? (txbDataFileContent != null ? txbDataFileContent : data) : TXBdata.Text; var inputs = mainInputs.Split(' ', '\r', '\n', '\t'); long cnt = 0; foreach (var input in inputs) { cnt += (await ss.SplitAsync( input, maxWordLength, probType, true)).Count; } Trace.WriteLine($"{cnt} words identified."); } catch (Exception error) { TXBout.Text = error.ToString(); } finally { ss.WordIdentified -= d; } writer.Close(); } } catch (Exception error) { TXBout.Text = error.ToString(); } finally { Trace.Unindent(); CHBsplit.CheckState = CheckState.Indeterminate; CHBsplit.Enabled = true; } }
private async Task PerformSplit() { try { Trace.Indent(); CHBsplit.Enabled = false; string fileName = "output.txt"; var encoding = Encoding.UTF8; using (var writer = new StreamWriter(fileName, false, encoding)) { TXBout.Clear(); var d = new SentenceSplitter.WordIdentifiedEventHandler((word) => { writer.WriteLine(word); TXBout.Invoke(new Action(() => { if (TXBout.TextLength < 10000) { TXBout.AppendText($"{word}\r\n"); if (TXBout.TextLength >= 10000) { TXBout.AppendText("......(Cut)\r\n"); } } })); }); try { ss.WordIdentified += d; Trace.WriteLine("Splitting..."); var ans = await ss.SplitAsync( string.IsNullOrWhiteSpace(TXBdata.Text)?(txbDataFileContent != null ? txbDataFileContent : sa.S) : TXBdata.Text, maxWordLength, probType, CHBverbose.Checked); Trace.WriteLine($"{ans.Count} words identified."); } catch (Exception error) { TXBout.Text = error.ToString(); } finally { ss.WordIdentified -= d; } writer.Close(); } } catch (Exception error) { TXBout.Text = error.ToString(); } finally { Trace.Unindent(); CHBsplit.CheckState = CheckState.Indeterminate; CHBsplit.Enabled = true; } }
private async void TXBin_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter && e.Control) { switch (CBmethod.SelectedItem) { case "Send Socket": { try { Trace.Indent(); Trace.WriteLine($"Initializing Socket..."); var input = TXBin.Text.Split('\n').Select(s => s.TrimEnd('\r')).ToArray(); var port = int.Parse(input[0]); TXBout.Text = $"port: {port}\r\nmsg: {input[1]}\r\n"; Socket client_sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client_sock.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), port)); Trace.WriteLine($"Connected: {client_sock.Connected}"); client_sock.Send(Encoding.UTF8.GetBytes(input[1])); client_sock.Send(new[] { (byte)'\0' }); var thread = new Thread(() => { using (var stream = new NetworkStream(client_sock)) { List <byte> data = new List <byte>(); const byte target = (byte)'\0'; while (true) { var _b = stream.ReadByte(); if (_b == -1) { Trace.WriteLine("Connection closed."); } var b = (byte)_b; if (b == target) { Trace.WriteLine($"receive_length={data.Count}"); var s = Encoding.UTF8.GetString(data.ToArray()); TXBout.Invoke(new Action(() => TXBout.AppendText(s + "\r\n"))); } else { data.Add(b); } } } }); thread.Start(); new Thread(() => { Thread.Sleep(1000 * 60); thread.Abort(); }); } catch (Exception error) { TXBout.Text = error.ToString(); } finally { Trace.Unindent(); } } break; case "Cut by Code": { string s = await CutByCode(TXBin.Text); if (s != null) { TXBout.Text = s; } } break; } } }