如何:协调多个执行线程

为了确保多线程组件的线程安全,必须协调对共享资源的访问。 如果多个线程尝试同时访问某一共享资源,则可能出现争用状态,从而导致数据损坏。 您可以使用锁来避免出现争用状态。 有关线程安全和争用状态的详细信息,请参见线程安全组件

在对象上创建锁

  1. 识别必须以原子方式执行的代码以及将在其上执行代码的对象。 有关详细信息,请参见线程安全组件

  2. 在该对象上放置一个锁,并将代码装入此锁中。

    该代码将在锁定的对象上以原子方式执行。

    SyncLock MyObject   ' This represents the start of the lock on MyObject.
    ' Insert code to be executed atomically on MyObject here.
    End SyncLock   ' This represents the end of the lock.
    
    lock (MyObject) 
       // All code inside the braces {} is executed with MyObject locked.
    {
       // Insert code to be executed atomically on MyObject here.
    }
    

请参见

任务

演练:用 Visual Basic 创作简单的多线程组件

演练:使用 Visual C# 创作简单的多线程组件

参考

BackgroundWorker

概念

线程安全组件

基于事件的异步模式概述

其他资源

组件中的多线程处理