Windows.System.Threading.Core 命名空间

创建为响应命名事件和信号灯而运行的工作项。 此外,为必须保证能够运行的工作项预先分配资源,即使在大量 (或完全) 资源分配的情况下也是如此。

注意

桌面应用和 UWP 应用支持 ThreadPool API。

PreallocatedWorkItem使用 ThreadPool 创建工作项时。RunAsync,工作项作为单个操作创建并提交。 这在大多数情况下都是可以接受的,但有时需要提前为工作项留出资源。

PreallocatedWorkItem 类提前构造工作项,使工作项处于“待机状态”,以便在需要时将其提交到线程池。 这在需要工作项之前完全分配了应用可用的资源的情况下非常有用,例如,调用使用工作项的解除分配例程。 如果已分配工作项,则仍然可以调用资源解除分配例程,并且即使所有资源都已在使用中, PreallocatedWorkItem 仍可提交到线程池。 有时,有必要将工作项排队,以响应 Win32 COM 对象创建的命名事件或信号灯。 可以使用 SignalNotifier 对象运行Windows 运行时方法来响应命名事件或信号灯。 这使你可以编写Windows 运行时代码,以响应使用 Win32 和 COM 发送的事件和信号,前提是事件或信号灯具有名称。 例如, SignalNotifier 可用于处理要移植到 UWP 应用的 Win32 代码。 ISignalableNotifier有时无法知道事件或信号灯的名称,但应用仍需要对其进行响应;例如,旧代码以及一些已知事件和信号灯仍使用可等待句柄而不是名称。 ISignalableNotifier 允许创建使用可等待句柄注册的 ISignalNotifier 对象。

注意

仅对于可能用尽所有可用资源或需要为资源解除分配例程创建工作项的应用,才需要预先分配的工作项。 信号通知器仅适用于使用 Win32 和 COM 的某些 应用。 如果不需要在应用中使用预分配或信号,请使用 Windows.System.Threading 创建工作项。

PreallocatedWorkItem

预先分配的工作项是在提交到线程池之前构造的,确保已构造工作项,以便在必要时将其提交到线程池。 例如,如果资源解除分配例程需要 PreallocatedWorkItem,则可以创建 PreallocatedWorkItem,因为在没有足够的资源可用于创建工作项的情况下,可能会调用资源解除分配例程。

注意

桌面应用和 UWP 应用支持 ThreadPool API。

SignalNotifier

在发出事件或信号灯时运行方法。 还可以指定超时值,使委托在经过时间跨度后运行,前提是命名事件未 (发生,或者信号灯未) 达到信号状态。

注意

桌面应用和 UWP 应用支持 ThreadPool API。

委托

SignalHandler

表示在信号通知器的附加事件或信号灯发出信号时,或者当可选超时值已过 (以先) 为准时调用的方法。