紧凑框架上的线程的AsyncCallback

我需要在紧凑的框架应用程序中实现线程来改善加载时间。 我想触发一个后台线程来调用外部API,而主线程缓存一些表单。 当后台线程完成后,我需要启动另外两个线程来填充数据缓存。

我需要后台线程能够执行回调方法所以我知道它已经完成并且可以启动接下来的两个线程,但是在紧凑框架中不支持委托上的BeginInvoke方法,那么我还能怎样做呢?

您可以自己安排,只需确保您的线程方法在完成后调用已完成的方法(或事件)。

由于CF也不支持ParameterizedThreadStart,我曾经做过一个小帮助类。

以下是摘录,未经重新测试:

//untested public abstract class BgHelper { public System.Exception Error { get; private set; } public System.Object State { get; private set; } public void RunMe(object state) { this.State = state; this.Error = null; ThreadStart starter = new ThreadStart(Run); Thread t = new Thread(starter); t.Start(); } private void Run() { try { DoWork(); } catch (Exception ex) { Error = ex; } Completed(); // should check Error first } protected abstract void DoWork() ; protected abstract void Completed(); } 

您需要inheritance并实施DoWork和Completed。 对于State属性使用可能是有意义的,只是注意到了。

我知道这是一个老问题,但是如果你使用的是CF 3.5,这对于这个问题来说是个很好的解决方案。 使用lambda委托..

 ThreadStart starter = () => DoWorkMethodWithParams( param1, param2); Thread myNewThread = new Thread(starter){IsBackground = true}; myNewThread.Start();