වැඩසටහනක් ප්රතිචාර නොදක්වන්නේ දැයි වින්ඩෝස් දැන ගන්නේ කෙසේද? ක්රියාත්මක වන සියලුම යෙදුම් නිරන්තරයෙන් ඡන්දය ප්රකාශ කරයිද?
වැඩසටහනක් ප්රතිචාර නොදක්වන්නේ දැයි වින්ඩෝස් දැන ගන්නේ කෙසේද? ක්රියාත්මක වන සියලුම යෙදුම් නිරන්තරයෙන් ඡන්දය ප්රකාශ කරයිද?
Answers:
යෙදුමකට වින්ඩෝස් සපයන පෝලිමකින් සිදුවීම් ලැබේ.
යෙදුම ටික වේලාවක් (තත්පර 5) සිදුවීම් විමසුම සිදු නොකරන්නේ නම්, උදාහරණයක් ලෙස දිගු ගණනය කිරීමක් කරන විට, වින්ඩෝස් යෙදුම එල්ලා ඇති බව උපකල්පනය කර පරිශීලකයා දැනුවත් කරයි.
එය වළක්වා ගැනීම සඳහා යෙදුම් මිල අධික ගණනය කිරීම් සේවක කෙඳි වෙත තල්ලු කළ යුතුය. නැතහොත් සැකසුම් බෙදිය යුතුය.
GetMessage
(හෝ ඒ හා සමාන) සහ DispatchMessage
.
IsHungAppWindow
ආරම්භක අවධියේ වැඩසටහනකට ඇමතිය යුතු නැති බව නිවැරදිව සටහන් කිරීමේදී පිළිගත් පිළිතුර GetMessage
.
GetMessage
? එම විශේෂාංගය මඟින් සරල විධාන රේඛා යෙදුම් වලට පෝලිම් ඡන්දය දීමට අවශ්ය නොවන බැවින් ඒවා එල්ලී ඇතැයි නොසැලකීමට ක්රියා කරයි.
වින්ඩෝස් වෙත ප්රභව කේතය නොමැතිව එය අභ්යන්තරව කරන්නේ කුමක්දැයි අපට සහතික විය නොහැක.
SDK වින්ඩෝස් ශ්රිතයක් IsHungAppWindow
භාවිතා කළ හැකිය.
යෙදුමක් ආදානය සඳහා බලා නොසිටින්නේ නම්, ආරම්භක සැකසුම් තුළ නොමැති නම් සහ තත්පර 5 ක අභ්යන්තර කල් ඉකුත් වීමේ කාලය තුළ පීක් මෙසෙජ් ලෙස නම් කර නොමැති නම් එය ප්රතිචාර නොදක්වන බව සැලකේ .
ප්රභවය IsHungAppWindow ශ්රිතය
ඉහළ මට්ටමේ කවුළුවක් තත්පර කිහිපයකට වඩා පණිවිඩ වලට ප්රතිචාර දැක්වීම නැවැත්වුවහොත්, පද්ධතිය කවුළුව ප්රතිචාර නොදක්වන බව සලකයි. මෙම අවස්ථාවේදී, පද්ධතිය කවුළුව සඟවා එය එකම Z අනුපිළිවෙල, පිහිටීම, ප්රමාණය සහ දෘශ්ය ගුණාංග සහිත අවතාර කවුළුවක් මගින් ප්රතිස්ථාපනය කරයි. මෙය පරිශීලකයාට එය ගෙනයාමට, ප්රමාණය වෙනස් කිරීමට හෝ යෙදුම වසා දැමීමට ඉඩ දෙයි. කෙසේ වෙතත්, යෙදුම සැබවින්ම ප්රතිචාර නොදක්වන බැවින් ලබා ගත හැකි එකම ක්රියා මේවා වේ.
පණිවිඩ සහ පණිවිඩ පෝලිම් පිළිබඳ මූලාශ්රය
අයදුම්පත් ඡන්ද විමසීම් නොකරන නමුත් සකසනය සඳහා කාලය ලබා දී ඇත.
වින්ඩෝස් හි උපලේඛන පද්ධතියක් ඇති අතර එමඟින් යෙදුම් නූල් සඳහා ප්රොසෙසරයට කාලය ලබා දේ.
උපලේඛනගත කිරීමේ ඇල්ගොරිතම සංකීර්ණ වන අතර එය වින්ඩෝස් අභ්යන්තරයේ 1 වන කොටස (6 වන සංස්කරණය) (සංවර්ධක යොමුව) තුළ විස්තර කර ඇත.
PeekMessage
. එබැවින් වින්ඩෝස් යෙදුමට පණිවිඩයක් යවන විට සහ තත්පර පහක් ඇතුළත සං sign ා නොකරන විට, එය යෙදුම ප්රතිචාර නොදක්වන බව සලකුණු කරයි. ඇත්ත වශයෙන්ම, වඩාත් මෑත වින්ඩෝස් වල, කවුළුව සලකුණු කර ඇත්තේ නියමිත වේලාවට පරිශීලක ආදානයට ප්රතිචාර දැක්වීමට අපොහොසත් වුවහොත් පමණි - මම යතුරක් හෝ යමක් ක්ලික් කිරීමට හෝ එබීමට උත්සාහ කරන තුරු, යෙදුමට පහසුවෙන් "එල්ලී" සිටිය හැකිය ප්රතිචාර නොදක්වන “නොපෙනී” විනාඩි.
යෙදුමක් ප්රතිචාර නොදක්වන බව වින්ඩෝස් සැමවිටම නොදනී. යෙදුම කවුළුවක් සමඟ අන්තර්ක්රියාකාරී යෙදුමක් විය යුතු අතර, යෙදුම ප්රතිචාර නොදක්වන බවට වින්ඩෝස් නිගමනය කිරීමට පෙර, යෙදුම සැකසීමට අසමත් වන පණිවිඩ කවුළුවට ලැබිය යුතුය.
නිදසුනක් ලෙස, විධාන රේඛාවෙන් ක්රියාත්මක වන පරිශීලක අතුරුමුහුණතක් නොමැති සංඛ්යා බිඳීමේ යෙදුමක් එහි කාර්යය කරන්නේද, නැතිනම් අනන්ත පුඩුවක් තුළ සිරවී තිබේද යන්න දැන ගැනීමට වින්ඩෝස් හට ක්රමයක් නොමැත.
වින්ඩෝස් හි අන්තර්ක්රියාකාරී චිත්රක යෙදුම් වලට පණිවිඩ පෝලිමක් අඛණ්ඩව ඡන්දය දීමෙන් සිදුවීම් ලැබේ. යතුරුපුවරුව, මූසිකය, ටයිමරය වැනි සිදුවීම් සමඟ වින්ඩෝස් මෙම පණිවිඩ පෝලිම් ජනප්රිය කරයි. යම් කාලයක් සඳහා පණිවිඩ පෝලිම ඡන්ද විමසීමට යෙදුමක් අපොහොසත් වුවහොත් (තත්පර 5 යනු IsHungAppWindow () ක්රියාකාරී ලේඛනයේ සඳහන් කාල සීමාවයි), වින්ඩෝස් යෙදුම "එල්ලා" ලෙස සලකයි, එය කවුළු මාතෘකාව වෙනස් කිරීමෙන් ඇඟවුම් කළ හැකිය (පෙළ එකතු කිරීම " (ප්රතිචාර නොදක්වයි) ”හෝ දේශීයකරණය කළ අනුවාදවල සමාන පෙළ) සහ පරිශීලකයා කවුළුව සමඟ අන්තර් ක්රියා කිරීමට උත්සාහ කරන්නේ නම් කවුළු අන්තර්ගතය ලබා ගැනීම.
යෙදුම් වින්ඩෝස් හඳුනා නොගන්නා ආකාරවලින් එල්ලිය හැකිය. නිදසුනක් ලෙස, යෙදුමක් එහි පණිවිඩ පෝලිමේ නිසි ලෙස ක්රියා නොකර දිගටම ඡන්දය ප්රකාශ කළ හැකිය, එබැවින් සියලු ප්රායෝගික අභිප්රායන් සහ අරමුණු සඳහා එය ප්රතිචාර නොදක්වන බව වින්ඩෝස් හඳුනා නොගෙන “එල්ලී” ඇති බව පෙනේ.
වින්ඩෝස් යනු මෙහෙයුම් පද්ධතියකි, එය ක්රියාත්මක වන සියලුම වැඩසටහන් අධීක්ෂණය කරයි.
සිදුවීම් භාවිතා කරමින් වින්ඩෝස් කවුළු මත පදනම් වූ යෙදුම් සමඟ සන්නිවේදනය කරයි. සෑම වැඩසටහනකටම නූල් ඇත, එන සිදුවීම් සඳහා නිරන්තරයෙන් සවන් දී ඒවා ක්රියාවට නංවයි. උදාහරණයක් ලෙස ඔබ බොත්තමක් හෝ දැනුම්දීම් ප්රදේශ නිරූපකයක් ක්ලික් කළ විට, වින්ඩෝස් සිදුවීමක් ජනනය කර සුදුසු ක්රියාවලියකට පෝෂණය කරයි. ක්රියාවලියට පසුව එය හැසිරවිය යුතු ආකාරය තීරණය කළ හැකිය.
වැඩසටහන් සමඟ ඇති සියලුම අන්තර්ක්රියා වින්ඩෝස් හි සිදුවීම් මත පදනම් වූවකි, එබැවින් වැඩසටහන මඟින් එන සිදුවීම් වැඩි කාලයක් ක්රියාවට නංවන විට, එයින් අදහස් වන්නේ එය ප්රතිචාර නොදක්වන බවයි. Av ඩේවිඩ් පොස්ටිල් ඔහුගේ පිළිතුරෙන් සොයාගෙන ඇති පරිදි , කල් ඉකුත් වීම තත්පර 5 කි. PeekMessage
සිදුවීම් පෝලිමේ සිට සිදුවීමක් ලබා ගන්නා ශ්රිතය වේ.
ඔබේ ප්රශ්නයට පිළිතුර ඔව් / නැත.
වින්ඩෝස් මෙහෙයුම් පද්ධතියට වින්ඩෝස් පණිවුඩකරණ පෝලිමේ සිදුවීම් සමඟ යෙදුම් ඡන්ද විමසීම් කළ හැකි අතර ඒවා කළ හැකි වුවද, වැඩසටහන් WinAPI සමඟ සම්බන්ධ වීමට හෝ වින්ඩෝස් පෝලිම හැසිරවීමට / පිළිතුරු දීමට නියත වශයෙන්ම ශුන්ය වගකීමක් ඇත. පෝලිමේ ඇති පණිවිඩයකට පිළිතුරු දීම පවා වැඩසටහන "අගුළු දමා තිබේද" යන්න වින්ඩෝස් වෙත නොකියයි. එය දර්ශකයකි, නමුත් එපමණයි. සැබෑ පිළිතුර තරමක් සංකීර්ණ ය.
නියම පිළිතුර
මිනිසුන් මෙහි සත්ය පිළිතුර වටහාගෙන සිටිති. වැඩසටහනක් “ප්රතිචාර නොදක්වන්නේද” යන්න තීරණය කිරීම පරිගණක විද්යාවේ විධිමත් ලෙස තීරණය කළ නොහැකි “ නතර කිරීමේ ගැටලුවේ ” ප්රභේදයකි . කෙටි පැහැදිලි කිරීම නම්, සබ්මැරීනයක් අසීමිත පුඩුවක් තුළ සිරවී තිබේද යන්න තීරණය කිරීම සඳහා ප්රොසෙසරයට තෙවන පාර්ශවයක් ලෙස ක්රියා කළ නොහැකි අතර, කවුන්ටරයක් වැඩි කිරීමට එරෙහිව කිසිවක් නොකර ස්ථාවර හා සාමාන්ය සංඛ්යාවෙන් අවසන් වේ. මේ දෙකම තදින් වසා ඇති ලූප ලෙස සැලකිය හැකිය. එකක් නතර වේ, අනෙක කිසි විටෙකත් අවසන් නොවේ. පුද්ගලයෙකු වශයෙන්, වැඩසටහනක් සැබවින්ම ප්රතිචාර දක්වන්නේද නැද්ද යන්න ඔබ නොදනී, විශේෂයෙන් එය තදින් වසා ඇති ලූපයක තිබේ නම් - ඔබ දන්නේ එය ප්රතිචාර දැක්විය යුතු යැයි සිතන්නේ නම් පමණි (ප්රතිචාර දැක්විය යුතුය ).
වින්ඩෝස් දෘෂ්ටි කෝණයෙන් බලන කල, මෙම ලූප දෙකම "ප්රතිචාර නොදක්වයි" . කවුළු ඔබට බලා සිටීමට හෝ අවසන් කිරීමට තේරීමක් ලබා දෙන්නේ එබැවිනි.
ඒ නිසා නිගමනයකි "ඇයි කවුළු ක්රියාවලියක් බව දන්නේ ඇත ඇත ප්රතිචාර?" පිළිතුර තරමක් දක්ෂයි. බහු-නූල් සහ බහු-ක්රියාදාම මෙහෙයුම් පද්ධතියක ක්රියාවලියක් සම්පාදනය කරන විට, සමහර විට තදින් වසා ඇති ලූපවල පවා, සම්පාදකයාට අස්වැන්න () විධානයක් එක් කළ හැකි අතර , එමඟින් ප්රොසෙසරයට වෙනත් ධාවන ක්රියාවලීන් වෙත මාරු විය හැකි බව පහසු දැනුම් දීමක් සපයයි. . එය ප්රොසෙසරය "අත්හරින" අතර "සන්දර්භය ස්විචයක්" (එය හැඳින්වෙන පරිදි) සිදු වන අතර එමඟින් මෙහෙයුම් පද්ධතියට (වින්ඩෝස් ඇතුළත්) තොගයේ ඇති වෙනත් සිදුවීම් වලට පිළිතුරු සැපයීමට ඉඩ සලසයි, සමහර ඒවාට ක්රියාවලිය ප්රතිචාර දක්වා ඇති බව නිරීක්ෂණය කිරීම ඇතුළත් වේ .
** ප්රතිචාර දැක්වීමේ ක්රියාවලියක් අවසන් වන බව මින් අදහස් නොවේ . ** අසීමිත පුඩුවක් තුළ ඇති ක්රියාවලියක් මඟින් ප්රොසෙසරය ලබා ගත හැකි අතර වින්ඩෝස් හට වෙනත් සිදුවීම් සැකසීමට ඉඩ ලබා දේ.
සමහර වින්ඩෝස් වැඩසටහන් වලදී, වැඩසටහන වින්ඩෝස් ඕඑස් සං als ා හසුරුවනු ඇති අතර එමඟින් මෙහෙයුම් පද්ධතියට එය “ප්රතිචාර දක්වන” බව පැවසිය හැකිය, නමුත් කිසිදු වැඩසටහනක් එසේ කිරීමට බැඳී නොමැත. වින්ඩෝස් හි පර්ල්, පීඑච්පී, පයිතන්, සහ වින්ඩෝස් වැනි ඉහළ මට්ටමේ භාෂා තුළ පවා ඔබට ඉතා සරල CPU හොගිං, නොනවතින වැඩසටහන් ලිවිය හැකිය. එම අවස්ථාවෙහිදී, වින්ඩෝස් රඳා පවතින්නේ හියුරිස්ටික් මතයි - CPU භාරය, මතකය, වැඩසටහන "අනුමාන කිරීමට" ක්රියාත්මක වන විට ප්රොසෙසරය හසුරුවන වාර ගණන. නැවතත්, එම අවස්ථාවේදී, වින්ඩෝස් ඔබෙන් ඉල්ලා අස්විය යුතු ය, මන්ද එය කළ යුතු දැයි එය නොදන්නා බැවිනි.
වික්ටර්ගේ (නිවැරදි) පිළිතුරද බලන්න. "ප්රතිචාර නොදැක්වීම" අනන්ත පුඩුවක් හා සමාන නොවේද යන්න පිළිබඳ අදහස් නොසලකා හරින්න. වින්ඩෝස් පණිවිඩ පෝලිම දැනුම් නොදී යෙදුමක් හැසිරවිය හැකි හෝ නොකළ හැකි සියලු ආකාරයේ පණිවිඩ, බාධා කිරීම්, ලූප තිබේ. පණිවිඩ පෝලිම හැසිරවීම යනු ක්රියාවලියක් එල්ලී ඇත්දැයි අනුමාන කිරීමට මෙහෙයුම් පද්ධතිය විසින් කවුන්ටරයන් තබා ගන්නා බොහෝ සිදුවීම් වලින් එකකි .