110,532
社区成员
发帖
与我相关
我的任务
分享
private static StringBuilder strs = new StringBuilder();
private static BackgroundWorker backgroundWorker;
static void Main(string[] args)
{
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += TransString;
backgroundWorker.RunWorkerCompleted += DisplayString;
//处理string
for (int i = 0; i < 10; i++)
{
string str = Console.ReadLine();
backgroundWorker.RunWorkerAsync(Tuple.Create(strs.ToString(), str));
strs.Append(str);
}
Console.ReadLine();
}
/// <summary>
/// 传递string
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void TransString(object sender,DoWorkEventArgs e)
{
var t = e.Argument as Tuple<string,string>;
e.Result = t.Item1 + t.Item2;
}
/// <summary>
/// 显示string
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void DisplayString(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine(e.Result.ToString());
}
backgroundworker
就可搞定!
public class StringQueueTest
{
private int cnt=0;
private Queue<string> strings=new Queue<string>();
public StringQueueTest()
{
Thread thread1=new Thread(new ThreadStart(Start1));
Thread thread2=new Thread(new ThreadStart(Start2));
thread1.Start();
thread2.Start();
}
private void Start1()
{
while (true)
{
string s=(cnt++).ToString();
Console.WriteLine(s);
strings.Enqueue(s);
Thread.Sleep(1000);
}
}
private void Start2()
{
while (true)
{
while (strings.Count>0)
{
Console.WriteLine(strings.Dequeue());
}
Thread.Sleep(100);
}
}
}