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


некоторые операции ввода-вывода



Download 6,27 Mb.
Pdf ko'rish
bet605/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   601   602   603   604   605   606   607   608   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

некоторые операции ввода-вывода 
должны выполняться синхронно
В Win32 API существует множество функций, выполняющих операции ввода-вы-
вода. К сожалению, не все их них допускают асинхронное выполнение. К примеру, 
Win32-метод 
CreateFile
(вызываемый конструктором 
FileStream
) всегда выпол-
няется синхронно. При попытке создать или открыть файл на сервере в сети до воз-
вращения управления методом 
CreateFile
может пройти несколько секунд — в это 
время вызывающий поток ничего не делает. В идеале приложения, разработанные 
с прицелом на оптимальные производительность и масштабируемость, должны ис-
пользовать Win32-функцию, которая создает или открывает файл в асинхронном 
режиме, чтобы поток не ждал ответа с сервера. К сожалению, в Win32 нет функ-
ции, подобной 
CreateFile
, а, значит, FCL не предлагает эффективного средства 
асинхронного открытия файлов. Windows также не предоставляет функций для 


816
Глава.28 .Асинхронные.операции.ввода-вывода
асинхронного обращения к реестру, обращения к журналу событий, получения 
списка файлов/подкаталогов, изменения атрибутов файла/каталога и т. д.
Рассмотрим ситуацию, когда такое поведение становится серьезной проблемой. 
Представьте, что вам нужно написать простой элемент интерфейса для ввода пути 
к файлу и поддержкой автоматического завершения (примерно как в часто исполь-
зуемом диалоговом окне открытия файла). Этот элемент управления должен задей-
ствовать отдельные потоки для перебора папок, в которых осуществляется поиск 
файлов, так как в Windows не существует функции асинхронного перебора файлов. 
По мере того как пользователь продолжает вводить путь к файлу, вам придется 
подключать дополнительные потоки, игнорируя результаты ранее порожденных 
потоков. В Windows Vista появилась новая Win32-функция 
CancelSynchronousIO

Она позволяет одному потоку отменять синхронную операцию ввода-вывода, прово-
димую другим. Эта функция не отражена в FCL, но если вы решите воспользоваться 
ею из управляемого кода, вызовите ее при помощи механизма P/Invoke. Сигнатура 
P/Invoke для данного случая рассмотрена в следующем разделе.
Многие полагают, что с синхронным прикладным программным интерфейсом 
работать проще, и во многих случаях это действительно так. Но иногда именно 
синхронные интерфейсы сильно осложняют жизнь.
Из-за проблем, возникающих при синхронном выполнении операций ввода-вы-
вода, при проектировании Windows Runtime группа Windows решила предоставить 
все методы ввода/вывода в асинхронной форме. Таким образом, сейчас существует 
функция Windows Runtime API для асинхронного открытия файлов (см. описание 
метода 
OpenAsync
класса 
Windows.Storage.StorageFile
). Windows Runtime не 
представляет функций API для синхронного выполнения операций ввода/выво-
да. К счастью, при вызове этих функций можно воспользоваться асинхронными 
функциями C# для упрощения кода.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   601   602   603   604   605   606   607   608   ...   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