SynchronizationContext类--管理异步环境
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication40
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int account = 100;
private void button1_Click(object sender, EventArgs e)
{
//执行同步
SendOrPostCallback ad = new SendOrPostCallback(add);
SendOrPostCallback sd = new SendOrPostCallback(sub);
SynchronizationContext ctx = new SynchronizationContext();
ctx.Send(ad, 10);
ctx.Send(sd, 5);
MessageBox.Show("采用同步调用,调用方法的线程标识:" + ";账户金额"+ account.ToString()+Thread.CurrentThread.ManagedThreadId.ToString());
}
private void add(object x)
{
int k = (int)x;
account = account + k;
MessageBox.Show("做加法,结果是" + account.ToString() + "线程标识为:" + Thread.CurrentThread.ManagedThreadId.ToString());
}
private void sub(object x)
{
int k = (int)x;
account = account - k;
MessageBox.Show("做减法,结果是" + account.ToString() + "线程标识为:" + Thread.CurrentThread.ManagedThreadId.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
//执行异步
SendOrPostCallback ad = new SendOrPostCallback(add);
SendOrPostCallback sd = new SendOrPostCallback(sub);
SynchronizationContext ctx = new SynchronizationContext();
ctx.Post(ad, 10);
ctx.Post(sd, 5);
MessageBox.Show("采用同步调用,调用方法的线程标识:" + ";账户金额" + account.ToString() + Thread.CurrentThread.ManagedThreadId.ToString());
}
}
}
#framework 2.0
转载于:https://my.oschina.net/zhujunxxxxx/blog/311997