Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet532/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   528   529   530   531   532   533   534   535   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.25 .Взаимодействие.с.компонентами.WinRT
// Закрытое поле для отслеживания зарегистрированных делегатов события
private EventRegistrationTokenTable m_manualEvent = null; 
// Ручная реализация методов add и remove
public event WinRTDelegate ManualEvent { 
add { 
// Получение существующей таблицы (или создание новой,
// если таблица еще не инициализирована)
return EventRegistrationTokenTable 
.GetOrCreateEventRegistrationTokenTable(ref m_manualEvent) 
.AddEventHandler(value); 
}
remove { 
EventRegistrationTokenTable 
.GetOrCreateEventRegistrationTokenTable(ref m_manualEvent) 
.RemoveEventHandler(value); 


public String RaiseManualEvent(Int32 number) { 
WinRTDelegate d = EventRegistrationTokenTable 
.GetOrCreateEventRegistrationTokenTable(ref 
m_manualEvent).InvocationList; 
return (d == null) ? "No callbacks registered" : d(number); 

#endregion 
#region Asynchronous methods 
// Асинхронные методы ДОЛЖНЫ возвращать 
// IAsync[Action|Operation](WithProgress) 
// ПРИМЕЧАНИЕ: другие языки видят DataTimeOffset как 
// Windows.Foundation.DateTime 
public IAsyncOperationWithProgress 
DoSomethingAsync() { 
// Используйте методы Run класса 
// System.Runtime.InteropServices.WindowsRuntime.AsyncInfo
// для вызова закрытого метода, написанного исключительно
// на управляемом коде.
return AsyncInfo.Run(DoSomethingAsyncInternal); 

// Реализация асинхронной операции на базе закрытого метода
// с использованием обычных технологий .NET
private async Task DoSomethingAsyncInternal( 
CancellationToken ct, IProgress progress) { 
for (Int32 x = 0; x < 10; x++) { 
// Поддержка отмены и оповещений о ходе выполнения
ct.ThrowIfCancellationRequested(); 
if (progress != null) progress.Report(x * 10); 
await Task.Delay(1000); // Имитация асинхронных операций



721
Определение.компонентов.WinRT.в.коде.C#
return DateTimeOffset.Now; // Итоговое возвращаемое значение
}
public IAsyncOperation DoSomethingAsync2() { 
// Если отмена и оповещения не нужны, используйте
// методы расширения AsAsync[Action|Operation]
// класса System.WindowsRuntimeSystemExtensions
// (они вызывают AsyncInfo.Run в своей внутренней реализации)
return DoSomethingAsyncInternal(default(CancellationToken), 
null).AsAsyncOperation(); 

#endregion 
// После распространения версии новые члены следует помечать
// атрибутом [Version(#)], чтобы программа WinMDExp.exe
// помещала новые члены в другой интерфейс COM. Это необходимо,
// поскольку интерфейсы COM должны быть неизменными.
[Version(2)] 
public void NewMethodAddedInV2() {} 

}
Следующий код JavaScript демонстрирует обращения ко всем представленным 
компонентам и функциям WinRT.
function () { 
// Для удобства обращения к пространству имен в коде
var WinRTComps = Wintellect.WinRTComponents; 
// Обращение к статическому методу и свойству типа WinRT
var s = WinRTComps.WinRTClass.staticMethod(null); // JavaScript передает "null"! 
var struct = { anumber: 123, astring: "Jeff", aenum: 
WinRTComps.WinRTEnum.notNone }; 
WinRTComps.WinRTClass.staticProperty = struct; 
s = WinRTComps.WinRTClass.staticProperty; // Обратное чтение
// Если метод имеет выходные параметры, они и возвращаемое значение
// передаются в виде свойств объекта
var s = WinRTComps.WinRTClass.outParameters(); 
var name = s.value; // Возвращаемое значение
var struct = s.x; // Параметр 'out'
var year = s.year; // Другой параметр 'out'
// Создание экземпляра компонента WinRT
var winRTClass = new WinRTComps.WinRTClass(null); 
s = winRTClass.toString(); // Вызов ToString() 
// Выдача и перехват исключений
try { winRTClass.throwingMethod(); } 
catch (err) { } 
// Передача массива
var a = [1, 2, 3, 4, 5]

продолжение



722
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   528   529   530   531   532   533   534   535   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish