解决方案 »
- 求一正则表达式
- 报表中设置某一字段加粗加下划线
- 用.NET做的图片缩略 报System.IO.FileNotFoundException: C:\Documents and Settings\Administrator\桌面\123.jpg
- 急!实现图片删除和拷贝!为什么会破坏图片,使其显示不出来
- 关于窗口显示
- 【菜鸟提问】问个弱弱的问题。怎么作继承窗体啊?
- webform DataGrid怎样把指针指在某条记录上?
- 怎样做象qq那样的图标?
- 菜鸟请教各位高手,在C#中如何实现数字或日期的格式化啊
- 用C#写体彩软件运行效率如何?
- 有n个位置,每个位置可取3个值,问有多少可能性?
- 求教webbrowser上picturebox控件设置透明背景png图片问题
3种传参方式
1.封装到类里去
2.object参数
3.委托传参
比如你有三个接口:IA,IB,ICIB的参数用到了IA的返回结果,IC用到了IB的返回结果,这样你还怎么异步?
var b = new ManualResetEvent(false);
ResuleTypeA result1 = null;
string result2 = null;
ThreadPool.QueueUserWorkItem(h =>
{
result1 = proc1(x);
a.Set();
});
ThreadPool.QueueUserWorkItem(h =>
{
result2 = proc2(y);
b.Set();
});
a.WaitOne();
b.WaitOne();你自己去写其它形式的代码,例如 async/await 形式的代码,也是一样要写额外代码的(要另外声明两个 async proc1、async proc2 方法的)。
string result2 = null;
var a = new Thread(() =>
{
result1 = proc1(x);
});
var b = new Thread(() =>
{
result2 = proc2(y);
});
a.Start();
b.Start();
a.Join();
b.Join();这些都是线程的基本操作方法。
var b = new ManualResetEvent(false);
ResultTypeA result1 = null;
string result2 = null;
proc1(x, r =>
{
result1 = r;
a.Set();
});
proc2(y, r =>
{
result2 = r;
b.Set();
});
a.WaitOne();
b.WaitOne();异步调用方法,向我们隐藏了proc1和proc2内部是否是子线程调用远程功能的事实。假设proc1是在子线程中调用,而proc2是在当前线程(实际上是同步顺序)调用,那么这里的异步调用形式的程序也不需要做任何修改,而且两个 ManualResetEvent 也r仍然可以正常运行。所以关键不是“异步、不异步”,而是你要了解假设是多线程的,如何同步!只要知道同步策略,不管你怎样写这里的代码,道理都是一样的。