同时执行两个方法问题请教
一个方法OpenFile("")(带一个string类型参数)
另一个 SendExcel(hssfworkbook, "")) (带一个HSSFWorkbook类型的对象,和一个string类型参数)
两个方法在不同的地方。想在同一地方执行完一个之后执行另一个。
用线程委托都行,只要能实现效果就可以。
[最优解释]
同步和异步没区别?
回调和顺序执行没区别?
问a();b();这样的代码能根据a()的结果来确定b()执行与否吗?
a()异步会单开线程,a();b();这样的代码能让a()异步完成后再执行b()吗?
[其他解释]
class Program
{
static void Main(string[] args)
{
new Action(() => { }).BeginInvoke(new AsyncCallback(Call), null);
a();
Console.ReadLine();
}
static void Call(IAsyncResult res)
{
if (res.IsCompleted)
b();
}
static void a()
{
for (int i = 0; i < 100000; i++)
Console.Write("a");
}
static void b()
{
for (int i = 0; i < 100000; i++)
Console.Write("b");
}
}
[其他解释]
用回调函数就可以了
[其他解释]
可以声明为成员变量(方法外面)或者自定义事件参数类
同时执行可以用多线程,然后Join,或者用ManaulResetEvent来控制
[其他解释]
加锁加锁加锁加锁
[其他解释]
OpenFile("");
SendExcel(hssfworkbook, ""));
------其他解决方案--------------------
如何做?
[其他解释]
void FunctionA(string s)
{ }
void FunctionB(string s)
{ }
void Main()
{
Action ac = () => { FunctionA("A"); };
AsyncCallback callback = new AsyncCallback(CallbackFn);
ac.BeginInvoke(callback, null);
}
void CallbackFn(IAsyncResult ar)
{
if (ar.IsCompleted)
{
FunctionB("B");
}
}
[其他解释]
异步调用就行了
[其他解释]
委托会不会,如果不会就百度一下,很简单的。。。。。你这个问题用委托超爽!
[其他解释]
这代码和
a();
b();
没有区别哦。
[其他解释]
devmiao 你可真逗
[其他解释]
如果a()和b()只是单纯的业务代码,不包含线程同步代码,你完成一个异步回调我看看
[其他解释]
没有区别。你的写法永远是a()执行完了再执行b()
a()和b()并没有同时执行。
等价于
a();
b();
要说优势,就是凭空多写了好多行。
[其他解释]
a();b();当然可以根据a()的结果执行b()
if (a() == xxx)
b();
不要学了复杂的,简单的都不会了,那还不如不学呢。
------其他解决方案--------------------
那你给的代码还报错误呢,笑话。知道什么叫示意代码吗?根据AsyncResult的结果确定动作不久完了吗?
[其他解释]
你的写法是a()b()吗?
再说a那里直到b是什么东西?还得加控制逻辑还耦合在一起还不如把b省略掉包含到a里面呢
[其他解释]
“一个方法OpenFile("")(带一个string类型参数)
另一个 SendExcel(hssfworkbook, "")) (带一个HSSFWorkbook类型的对象,和一个string类型参数)
两个方法在不同的地方。想在同一地方执行完一个之后执行另一个。
用线程委托都行,只要能实现效果就可以。 ”
你能根据上面这段文字确定楼主想要的就是你的a()b()答案吗?你能确定楼主问的就是先a()后b()的问题吗?
[其他解释]
该回复于2012-12-02 14:03:42被版主删除
[其他解释]
这要看怎么理解“不同的地方“”同一地方”这样矛盾的表达到底是什么意思了。
也许lz就是把简单的问题想复杂了呢。
可不能说人家白痴。
[其他解释]
该回复于2012-12-02 14:02:45被版主删除
[其他解释]
该回复于2012-12-02 14:02:34被版主删除
[其他解释]
关键是有个 HSSFWorkbook类型的对象 的参数要传过来。不是单一个值类型的string或int之类(这个我也已经实现了,主要是那个类型的对象不知道该怎么传过来)。 我是用的线程。 用委托也还是会有同样的参数问题。
[其他解释]
该回复于2012-12-02 14:43:53被管理员删除
[其他解释]
异步调用的话,这个HSSFWorkbook类型的对象该通过何种方式传过来呢?
[其他解释]
++1
[其他解释]
你把代码给我
[其他解释]
和我做梦时想到的方法一模一样!