Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Runtime bahasa umum adalah dasar dari Microsoft .NET Framework. Anda dapat membayangkan lingkungan waktu jalan bahasa umum sebagai agen yang mengelola kode selama waktu eksekusi, menyediakan layanan inti seperti manajemen memori, manajemen utas, dan remoting, sekaligus menegakkan keamanan kode yang ketat. Bahkan, konsep manajemen kode adalah prinsip mendasar dari runtime bahasa umum. Kode yang menargetkan runtime bahasa umum dikenal sebagai kode terkelola. Kode yang tidak menargetkan runtime bahasa umum dikenal sebagai kode asli.
Pustaka kelas Framework adalah kumpulan kelas yang dapat digunakan kembali yang komprehensif dan berorientasi objek yang dapat Anda gunakan untuk mengembangkan aplikasi mulai dari aplikasi baris perintah tradisional atau antarmuka pengguna grafis (GUI) hingga aplikasi berdasarkan inovasi terbaru yang disediakan oleh ASP.NET dan Layanan Web.
Pustaka Terkelola PC Tablet berisi sekumpulan objek terkelola yang memperluas Kerangka Kerja untuk memberikan dukungan untuk input dan output tulisan tangan pada PC Tablet serta pertukaran data dengan komputer lain.
Pengecualian
Objek pustaka terkelola dalam API PC Tablet membungkus implementasi pustaka COM. Ketika objek atau kontrol pustaka COM dasar mengembalikan kesalahan, API terkelola akan melempar pengecualian Marshal.ThrowExceptionForHR yang memberikan detail tentang pengecualian COM internal. Anda dapat merujuk ke nilai HRESULT di Referensi Pustaka COM untuk detail tentang kemungkinan kesalahan yang mungkin dikembalikan.
Perbandingan Objek
Untuk semua objek di pustaka Tablet PC Platform Managed, Equals tidak diterapkan ulang sehingga tidak dapat membandingkan dengan benar dua objek yang sama. Antarmuka pemrograman aplikasi terkelola (API) tidak mendukung perbandingan objek untuk kesetaraan, baik melalui fungsi Equals atau melalui operator sama dengan (==).
Pengikatan ke Microsoft.Ink.dll Terbaru
Rakitan Microsoft.Ink.dll terbaru adalah pengganti yang kompatibel untuk Microsoft.Ink.dll versi 1.0 dan Microsoft.Ink.15.dll. Dalam kebanyakan kasus, Anda tidak perlu membuat perubahan apa pun pada aplikasi Anda yang didistribusikan dengan rakitan yang lebih lama. Namun, dalam beberapa kasus Anda perlu menginstruksikan pemuat runtime bahasa umum untuk menggunakan pustaka tautan dinamis (DLL) yang lebih baru di mana pun DLL yang lebih lama telah dirujuk.
Satu-satunya waktu Anda perlu secara eksplisit mengikat ke rakitan baru dengan menggunakan teknik berikut adalah jika aplikasi Anda menggunakan komponen yang mereferensikan rakitan versi 1.0 atau 1.5 dalam kombinasi dengan komponen yang mereferensikan perakitan versi yang lebih baru, seperti 1.7, dan jika komponen tersebut dapat bertukar data.
Cara terbaik untuk menginstruksikan runtime loader bahasa umum untuk menggunakan DLL yang lebih baru adalah dengan mengalihkan versi rakitan di tingkat aplikasi. Anda dapat menentukan bahwa aplikasi Anda menggunakan versi rakitan yang lebih baru dengan menempatkan informasi pengikatan perakitan dalam file konfigurasi aplikasi Anda. Untuk informasi selengkapnya tentang mengalihkan versi rakitan di tingkat aplikasi, lihat Mengalihkan Versi Rakitan, khususnya bagian "Menentukan Pengikatan Rakitan dalam File Konfigurasi."
Anda harus membuat file konfigurasi di direktori yang sama dengan file yang dapat dieksekusi. File konfigurasi harus memiliki nama yang sama dengan executable Anda, diikuti oleh ekstensi file .config. Misalnya, untuk aplikasi, MyApp.exe, file konfigurasi harus berupa file MyApp.exe.config. File konfigurasi menggunakan elemen bindingRedirect untuk memaksa semua versi sebelumnya dipetakan ke versi terbaru, seperti yang ditunjukkan dalam contoh berikut:
<bindingRedirect oldVersion="0.0.0.0-1.7.2600.xxxx" newVersion="1.7.2600.xxxx" />
Untuk informasi selengkapnya tentang file konfigurasi, termasuk contoh cara membuat Extensible Markup Language (XML) untuk file konfigurasi, lihat bindingRedirect dan Pengalihan Versi Assembly.
Aplikasi yang dibuat dengan Microsoft Windows XP Tablet PC Edition Development Kit 1.7 dan versi yang lebih baru secara otomatis terikat ke versi baru rakitan Microsoft.Ink. Untuk informasi selengkapnya tentang pengikatan rakitan, lihat Bagaimana Runtime Menemukan Rakitan.
Nota
Menggunakan kebijakan aplikasi untuk mengikat ke assembly yang diperbarui tidak berfungsi untuk aplikasi yang menggunakan kelas Divider atau kelas PenInputPanel. Aplikasi yang menggunakan salah satu kelas tersebut harus terus menggunakan Microsoft.Ink.15.dll atau dikompresi ulang setelah merujuk rakitan yang diperbarui.
Bekerja dengan Peristiwa
Jika kode dalam penanganan aktivitas untuk salah satu objek terkelola melemparkan pengecualian, pengecualian tidak dikirimkan kepada pengguna. Untuk memastikan bahwa pengecualian dikirimkan, gunakan blok try-catch di penanganan aktivitas Anda untuk peristiwa terkelola.
Mengelola Formulir
Kelas Formulir dan kelas dasarnya tidak menentukan finalizer. Untuk membersihkan sumber daya Anda pada formulir, tulis subkelas yang menyediakan finalizer (misalnya, destruktor C# menggunakan ~) yang memanggil Buang. Untuk melakukan pembersihan, finalizer menggantikan metode Dispose dan kemudian memanggil metode Dispose dari kelas dasar. Jangan merujuk ke objek lain yang memerlukan metode Finalize dalam metode Dispose ketika parameter Boolean FALSE, karena objek tersebut mungkin sudah di-finalisasi. Untuk informasi selengkapnya tentang merilis sumber daya, lihat Menyelesaikan Metode dan Destruktor.
Formulir dan RecognizerContext
Peristiwa RecognizerContext dijalankan di utas yang berbeda daripada utas tempat formulir berada. Kontrol pada Windows Forms terikat ke utas spesifik dan tidak aman dari utas. Oleh karena itu, Anda harus menggunakan salah satu metode pemanggilan kontrol untuk mengelola pemanggilan ke utas yang tepat. Metode-metode pada kontrol yang aman untuk utas adalah: Invoke, BeginInvoke, EndInvoke, dan CreateGraphics. Untuk semua panggilan metode lainnya, gunakan salah satu metode pemanggilan ini saat memanggil dari utas yang berbeda. Untuk informasi lebih lanjut tentang cara menggunakan metode ini, lihat Memanipulasi Kontrol dari Utas.
Menunggu Peristiwa
Lingkungan PC Tablet memiliki banyak utas. Gunakan fungsi CoWaitForMultipleHandles alih-alih metode tunggu lainnya untuk memungkinkan panggilan Model Objek Komponen (COM) yang dapat masuk kembali ke apartemen multithreaded (MTA) Anda saat aplikasi Anda menunggu pada suatu peristiwa.
Menggunakan Koleksi Goresan Tinta
Instans Stroke koleksi yang diperoleh dari objek Tinta bukan sampah yang dikumpulkan. Untuk menghindari kebocoran memori, kapan saja Anda bekerja dengan salah satu koleksi ini, gunakan pernyataan "menggunakan" seperti yang ditunjukkan di bawah ini.
using (Strokes strokes = myInk.Strokes)
{
int i = strokes.Count;
}
Membuang Objek dan Kontrol Terkelola
Untuk menghindari kebocoran memori, Anda harus secara eksplisit memanggil metode Buang pada objek atau kontrol PC Tablet mana pun yang telah dilampirkan oleh penanganan aktivitas sebelum objek atau kontrol keluar dari cakupan.
Untuk meningkatkan performa aplikasi Anda, buang objek, kontrol, dan koleksi berikut secara manual saat tidak lagi diperlukan.
- Pemisah
- Tinta
- InkCollector
- InkEdit
- InkOverlay
- InkPicture
- PenInputPanel
- RecognizerContext
- Stroke
Contoh C# berikut menunjukkan beberapa skenario di mana metode Buang digunakan.
// A field for a Divider object
private Microsoft.Ink.Divider theDivider;
// A method that creates a Divider object
public void CreateDivider()
{
// Make sure any previous Divider object was disposed of.
if (null != theDivider)
{
theDivider.Dispose();
theDivider = null;
}
// Create the Divider object.
theDivider = new Microsoft.Ink.Divider();
// The remainder of the method
}
// A method that disposes of the Divider object
public void DisposeDivider()
{
// The remainder of the method
// Dispose of the Divider object.
if (null != theDivider)
{
theDivider.Dispose();
theDivider = null;
}
}
// A method that uses a local PenInputPanel object.
public void UsePenInputPanel()
{
// Create the PenInputPanel object.
Microsoft.Ink.PenInputPanel thePenInputPanel =
new Microsoft.Ink.PenInputPanel();
// The remainder of the method
// Dispose of the PenInputPanel object before exiting.
thePenInputPanel.Dispose();
thePenInputPanel = null;
}