C#网络编程 让进程不断地打印 “a” 代码+解析
仍然是解析都在代码里了
实现结果如下图所示:
前台代码:
<Window x:Class="makeact.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ScrollViewer Height="232" HorizontalAlignment="Left" Margin="6,12,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="489">
<TextBlock Height="auto" Name="textBlock1" Text="" Width="auto" Background="AliceBlue"/>
</ScrollViewer>
<Button Content="开始不停打印“a”" Height="25" HorizontalAlignment="Left" Margin="20,250,0,0" Name="button1" VerticalAlignment="Top" Width="185" Background="AntiqueWhite" Click="button1_Click" />
<Button Content="停止不停打印“a”" Height="25" HorizontalAlignment="Left" Margin="20,281,0,0" Name="button2" VerticalAlignment="Top" Width="185" Background="AntiqueWhite" Click="button2_Click" />
</Grid>
</Window>
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
namespace makeact
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private volatile bool isExit = false;//开始或者结束线程
//开始不停的打印“a”
private void button1_Click(object sender, RoutedEventArgs e)
{
//点击开始进程的按钮后,线程就会开始
isExit = false;
//定义要打印的内容 进程开始的时候打印a , 进程结束的时候提示进程已经结束
Data data = new Data { Message = "a ", Info = "\n进程已经结束\n" };
//定义一个线程
Thread t = new Thread(Addmessage);
t.Start(data);//开始进程
}
//添加信息message 委托
private void Addmessage(object message)
{
Data data1 = message as Data;
while (isExit == false)
{
ShowMessage(data1.Message);
Thread.Sleep(500);
}
ShowMessage(data1.Info);
}
private void ShowMessage (string message)
{
Action act = delegate()
{
textBlock1.Text += message.ToString();
};
textBlock1.Dispatcher.Invoke(act);
}
//停止不停的打印“a”
private void button2_Click(object sender, RoutedEventArgs e)
{
//停止进程
isExit = true;
}
public class Data
{
public string Message { get; set; }
public string Info { get; set; }
}
}
}