本帖最后由 bigjimmy8257 于 2019-7-6 14:16 编辑
关于异步回调的执行,我从Oudi 处得到的回复知道,回调中的代码需要在 回调所在代码块中所有代码都执行完成后才能被执行。 我的理解如下:
// 代码块
{
function( my_args, (obj, args)=> { // 异步回调代码;});
// 其他代码
code_block1();
code_block2();
}
如上代码,蓝色部分的回调代码必须等待 红色代码 执行完成后才会被执行。
我猜想如此设置的原因是为了不影响整个后续代码的运行,但有的操作(比如this.Client.GetClipboard )的执行速度是非常快的,此时用户
希望可以在 红色部分执行的时候就可以进行根据异步代码中设置的内容进行处理,或者我红色的部分可以放在子线程中进行,并在内部等待 异步回调代码的操作结果。比如:
{
function(my, args, (obj, args) => { flag = true; })
ThreadStart Thparm = new ThreadStart( Func2 );
Thread Th1 = new Thread(Thparm);
Th1.Start();
}
void Func2()
{
while(!flag);
// do something
return;
}
希望能够提供额外的参数,比如说给上面的 function 添加参数,指明何时执行 回调代码 :
function(my, args, (obj, args) => { flag = true; } , [CallBackExecutionMethod = Post | Immediate] )
请评估。
大杰米
|