脚本宝典收集整理的这篇文章主要介绍了html5教程-等待句柄判断异步委托完成,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
通过AsyncWatiHandle属性,访问等待句柄。WaitOne()方法阻断当前线程,直到异步调用线程完成返回可以利用的句柄以后再执行当前线程。
程序:
[html]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AsyncDelegate
{
class Program
{
public delegate int TakeSomeTimeDelegate(int data,int ms);
static void Main(string[] args)
{
TakeSomeTimeDelegate dl=TakeSomeTime;
IAsyncResult ar=dl.BeginInvoke(1,200,null,null);
while (true)
{
Console.WriteLine(".");
Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
if (ar.AsyncWaitHandle.WaitOne(100, false))
{
Console.WriteLine("Can get the result now");
break;
}
}
//while (!ar.IsCompleted)
//{
// Console.WriteLine(".");
// Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(50);
//}
int result = dl.EndInvoke(ar);
Console.WriteLine("Result:{0}", result);
}
static int TakeSomeTime(int data, int ms)
{
Console.WriteLine("TakeSomeTime started!");
Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(ms);
Console.WriteLine("TakeSomeTime Completed!");
return ++data;
}
}
}
[html]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AsyncDelegate
{
class Program
{
public delegate int TakeSomeTimeDelegate(int data,int ms);
static void Main(string[] args)
{
TakeSomeTimeDelegate dl=TakeSomeTime;
IAsyncResult ar=dl.BeginInvoke(1,200,null,null);
while (true)
{
Console.WriteLine(".");
Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
if (ar.AsyncWaitHandle.WaitOne(100, false))
{
Console.WriteLine("Can get the result now");
break;
}
}
//while (!ar.IsCompleted)
//{
// Console.WriteLine(".");
// Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(50);
//}
int result = dl.EndInvoke(ar);
Console.WriteLine("Result:{0}", result);
}
static int TakeSomeTime(int data, int ms)
{
Console.WriteLine("TakeSomeTime started!");
Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(ms);
Console.WriteLine("TakeSomeTime Completed!");
return ++data;
}
}
}
运行结果:
ar.AsyncWaitHandle.WaitOne()阻断了当前线程, 直到异步调用线程完成获得可以利用的句柄以后再次执行当前线程。
作者:xuhongwei0411
通过AsyncWatiHandle属性,访问等待句柄。WaitOne()方法阻断当前线程,直到异步调用线程完成返回可以利用的句柄以后再执行当前线程。
程序:
[html]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AsyncDelegate
{
class Program
{
public delegate int TakeSomeTimeDelegate(int data,int ms);
static void Main(string[] args)
{
TakeSomeTimeDelegate dl=TakeSomeTime;
IAsyncResult ar=dl.BeginInvoke(1,200,null,null);
while (true)
{
Console.WriteLine(".");
Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
if (ar.AsyncWaitHandle.WaitOne(100, false))
{
Console.WriteLine("Can get the result now");
break;
}
}
//while (!ar.IsCompleted)
//{
// Console.WriteLine(".");
// Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(50);
//}
int result = dl.EndInvoke(ar);
Console.WriteLine("Result:{0}", result);
}
static int TakeSomeTime(int data, int ms)
{
Console.WriteLine("TakeSomeTime started!");
Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(ms);
Console.WriteLine("TakeSomeTime Completed!");
return ++data;
}
}
}
[html]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AsyncDelegate
{
class Program
{
public delegate int TakeSomeTimeDelegate(int data,int ms);
static void Main(string[] args)
{
TakeSomeTimeDelegate dl=TakeSomeTime;
IAsyncResult ar=dl.BeginInvoke(1,200,null,null);
while (true)
{
Console.WriteLine(".");
Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
if (ar.AsyncWaitHandle.WaitOne(100, false))
{
Console.WriteLine("Can get the result now");
break;
}
}
//while (!ar.IsCompleted)
//{
// Console.WriteLine(".");
// Console.WriteLine("Run in thread:" + Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(50);
//}
int result = dl.EndInvoke(ar);
Console.WriteLine("Result:{0}", result);
}
static int TakeSomeTime(int data, int ms)
{
Console.WriteLine("TakeSomeTime started!");
Console.WriteLine("Run in thread:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(ms);
Console.WriteLine("TakeSomeTime Completed!");
return ++data;
}
}
}
运行结果:
ar.AsyncWaitHandle.WaitOne()阻断了当前线程, 直到异步调用线程完成获得可以利用的句柄以后再次执行当前线程。
作者:xuhongwei0411
觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的html5教程-等待句柄判断异步委托完成全部内容,希望文章能够帮你解决html5教程-等待句柄判断异步委托完成所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。