ThreadStart.BeginInvoke throws NotSupportedException on Compact framework

后端 未结 2 1604
独厮守ぢ
独厮守ぢ 2021-01-14 21:48

I\'m working with threads on a compact framework project and have code that looks something like below. When I try to step into StartThreads(), a NotSupportedException is th

相关标签:
2条回答
  • 2021-01-14 22:26

    delegate.BeginInvoke is not supported on the CF.

    However the ThreadPool is supported. You can use the thread pool to achieve essentially the same behavior.

    void SomeMethod()
    {
       this.StartThreads();
    }
    
    void StartThreads()
    {
        System.Threading.ThreadPool.QueueUserWorkItem(DoStuff);
    }
    

    if you want it to call a callback when finished I suggest you read up on the Asynchronous Programming Model

    0 讨论(0)
  • 2021-01-14 22:28

    The BeginInvoke mechanism is not supported in CF, along with the ThreadPool.

    The reason you don't see the Exception where you expect is due to the way this is implemented. I am not totally sure about the details but BeginInvoke is not a normal method (of the Delegate class) but something that is injected at runtime (just guessing that last part).

    The error occurs when the JIT compiler gets to work on the StartThreads method.

    0 讨论(0)
提交回复
热议问题