共用方式為


外掛程式和 RealTimeStylus 類別

RealTimeStylus物件的設計目的是要從平板電腦手寫筆即時存取資料流程。 實作 IStylusSyncPluginIStylusAsyncPlugin 介面的外掛程式物件可以新增至 RealTimeStylus 物件。 同步外掛程式通常會由高優先順序執行緒上的 RealTimeStylus 物件直接呼叫,而非同步外掛程式通常會在應用程式的使用者介面上呼叫, (UI) 執行緒。 針對需要即時存取資料流程的工作建立或使用同步外掛程式,而且會以計算方式不受管理,例如封包篩選。 針對不需要即時存取資料流程的工作,例如筆跡集合,建立或使用非同步外掛程式。

某些工作可能需要計算需求,但需要即時存取資料流程,例如多動作手勢辨識。 為了解決這些需求,StylusInput API 提供串聯 的 RealTimeStylus 模型,可讓您使用兩個 RealTimeStylus 物件,每個物件都在其自己的執行緒上執行。 如需串聯 RealTimeStylus 模型的詳細資訊,請參閱 Cascaded RealTimeStylus 模型

IStylusSyncPluginIStylusAsyncPlugin介面都會定義相同的方法。 這些方法可讓 RealTimeStylus 物件將手寫筆資料傳遞至每個外掛程式,不論它是非同步或同步外掛程式。 Microsoft.StylusInput.IStylusSyncPlugin.DataInterestMicrosoft.StylusInput.IStylusAsyncPlugin.DataInterest屬性允許每個外掛程式訂閱平板電腦手寫筆資料流程中的特定資料。 外掛程式應該只訂閱執行其工作所需的資料,以將效能需求降至最低。 如需執行緒和 RealTimeStylus 類別的詳細資訊,請參閱 手寫筆Input API 的執行緒考慮

RealTimeStylus物件會使用Microsoft.StylusInput.PluginData命名空間中的 物件,將手寫筆資料傳遞至其外掛程式。RealTimeStylus也會攔截外掛程式擲回的例外狀況。當RealTimeStylus攔截到例外狀況時,它會呼叫IStylusSyncPlugin.ErrorIStylusAsyncPlugin.Error方法來通知外掛程式。 如需使用外掛程式資料的詳細資訊,請參閱 外掛程式資料和 RealTimeStylus 類別。 如需錯誤處理的詳細資訊,請參閱外掛程式資料和 RealTimeStylus 類別的 StylusInput API 錯誤處理考慮 和錯誤資料一節。

注意

至少必須附加一個外掛程式至 RealTimeStylus 物件,才能啟用 RealTimeStylus 物件。

 

下列主題描述一些常見的外掛程式類別。

特殊考慮

由於 RealTimeStylus 物件的複雜本質,您應該記下下列事項。

如果外掛程式修改附加的外掛程式集合, 則 RealTimeStylus 物件會擲回例外狀況。 只有當外掛程式被 RealTimeStylus 物件呼叫為該集合的成員時,才會發生這種情況。

下列 C# 範例是會導致 RealTimeStylus 物件擲回例外狀況的程式碼。

using Microsoft.Ink;
using Microsoft.StylusInput;
using Microsoft.StylusInput.PluginData;

// ...
public class thePlugin : Microsoft.StylusInput.IStylusAsyncPlugin
{
    // ...

    // Called when a system gesture occurs.
    public void SystemGesture(RealTimeStylus sender, SystemGestureData data)
    {
        // The following line will cause the realtime stylus that calls this method
        // to throw an exception.
        sender.Dispose();
    }
    
    // ...
}

如果外掛程式呼叫 RealTimeStylus 物件的Dispose方法,則 RealTimeStylus物件會擲回例外狀況。 只有在外掛程式由 RealTimeStylus 物件呼叫外掛程式時,才會發生這種情況。

下列 C# 範例是會導致 RealTimeStylus 物件擲回例外狀況的程式碼。

using Microsoft.Ink;
using Microsoft.StylusInput;
using Microsoft.StylusInput.PluginData;

// ...
public class thePlugin : Microsoft.StylusInput.IStylusAsyncPlugin
{
    Microsoft.StylusInput.GestureRecognizer theGestureRecognizer;

    // ...

    // Called when a system gesture occurs.
    public void SystemGesture(RealTimeStylus sender, SystemGestureData data)
    {
        // The following line will cause the realtime stylus that calls this method
        // to throw an exception.
        sender.AsyncPluginCollection.Add(this.theGestureRecognizer);
    }
    
    // ...
}

啟用 RealTimeStylus 物件時,可以修改外掛程式集合;不過,這可能會讓應用程式的行為更難預測。 在啟用 RealTimeStylus 物件時新增外掛程式時, RealTimeStylus 物件會呼叫外掛程式的 IStylusAsyncPlugin.RealTimeStylusEnabledIStylusSyncPlugin.RealTimeStylusEnabled 方法。 當啟用 RealTimeStylus 物件時移除外掛程式時, RealTimeStylus 物件會呼叫外掛程式的 IStylusAsyncPlugin.RealTimeStylusDisabledIStylusSyncPlugin.RealTimeStylusDisabled 方法。 這可讓外掛程式維持其適當的狀態,而不需要檢查RealTimeStylus物件的Enabled屬性。

在啟用 RealTimeStylus 物件時新增外掛程式時,外掛程式接收的外掛程式資料可能未包含足夠的資訊,以充分建立初始資料的內容。 例如,新加入的外掛程式可能會開始從筆觸中接收封包資料。 同樣地,當啟用 RealTimeStylus 物件時移除外掛程式時,外掛程式收到的外掛程式資料可能不足以完成處理資料。

注意

若要取得整體穩定性,請在呼叫外掛程式的 RealTimeStylusEnabled 或 RealTimeStylusDisabled方法時,重設外掛程式的內部狀態。

 

Cascaded RealTimeStylus 模型

手寫筆Input API 的錯誤處理考慮

外掛程式資料和 RealTimeStylus 類別

手寫筆的執行緒考慮Input API