Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní .NET Framework obsahuje doplněk, který můžou vývojáři použít k vytváření aplikací, které podporují rozšiřitelnost doplňků. Tento model doplňku umožňuje vytvářet doplňky, které se integrují s funkcemi aplikace a rozšiřují je. V některých scénářích musí aplikace také zobrazovat uživatelská rozhraní, která poskytují doplňky. Toto téma ukazuje, jak WPF rozšiřuje model doplňku .NET Framework tak, aby umožňoval tyto scénáře, architekturu za ní, její výhody a jeho omezení.
Požadavky
Vyžaduje se znalost modelu rozšiřujících modulů rozhraní .NET Framework. Další informace naleznete v tématu Doplňky a rozšiřitelnost.
Add-Ins Přehled
Aby se zabránilo složitosti rekompilace aplikací a opětovnému nasazení, aby zahrnovaly nové funkce, aplikace implementují mechanismy rozšiřitelnosti, které vývojářům (jak první straně, tak třetí straně) umožňují vytvářet další aplikace, které se s nimi integrují. Nejběžnější způsob, jak tento typ rozšiřitelnosti podporovat, je použití doplňků (označovaných také jako doplňky a moduly plug-in). Mezi příklady reálných aplikací, které zpřístupňují rozšiřitelnost pomocí doplňků, patří:
Doplňky aplikace Internet Explorer
Zásuvné moduly pro Windows Media Player
Doplňky sady Visual Studio
Například doplněk Windows Media Player umožňuje vývojářům třetích stran implementovat moduly plug-in, které rozšiřují Windows Media Player různými způsoby, včetně vytváření dekodérů a kodérů pro formáty médií, které nejsou nativně podporovány programem Windows Media Player (například DVD, MP3), zvukovými efekty a skiny. Každý model doplňku je sestaven tak, aby zpřístupnil funkce, které jsou pro aplikaci jedinečné, i když existuje několik entit a chování, které jsou společné pro všechny modely doplňků.
Tři hlavní entity typických řešení rozšiřitelnosti doplňků jsou kontrakty, doplňky a hostitelské aplikace. Kontrakty definují, jak se doplňky integrují s hostitelskými aplikacemi dvěma způsoby:
Doplňky se integrují s funkcemi implementovanými hostitelskými aplikacemi.
Hostitelské aplikace zpřístupňují funkce pro doplňky, se kterými se dají integrovat.
Aby bylo možné doplňky používat, musí je hostitelské aplikace najít a načíst za běhu. Aplikace, které podporují doplňky, proto mají následující další odpovědnosti:
Zjišťování: Vyhledání doplňků, které dodržují kontrakty podporované hostitelskými aplikacemi.
Aktivace: Načítání, spouštění a navazování komunikace s doplňky
Izolace: Použití domén aplikací nebo procesů k vytvoření hranic izolace, které chrání aplikace před potenciálními problémy se zabezpečením a spouštěním doplňků.
Komunikace: Povolení vzájemné komunikace doplňků a hostitelských aplikací přes hranice izolace voláním metod a předáváním dat
Správa doby života: Načítání a uvolňování domén a procesů aplikací čistým a předvídatelným způsobem (viz Domény aplikací).
Správa verzí: Zajištění, aby hostitelské aplikace a doplňky stále mohly komunikovat při vytváření nových verzí.
Nakonec je vývoj robustního modelu doplňků komplexní úkol. Z tohoto důvodu poskytuje rozhraní .NET Framework infrastrukturu pro vytváření modelů doplňků.
Poznámka:
Podrobnější informace o doplňcích najdete v tématu Doplňky a rozšiřitelnost.
Přehled modelu Add-In rozhraní .NET Framework
Model doplňků .NET Frameworku, který se nachází v System.AddIn jmenném prostoru, obsahuje sadu typů určených ke zjednodušení vývoje rozšiřitelnosti doplňků. Základní jednotkou doplňku rozhraní .NET Framework je kontrakt, který definuje, jak hostitelská aplikace a doplněk vzájemně komunikují. Kontrakt je zpřístupněn hostitelské aplikaci prostřednictvím specifického zobrazení pro tuto aplikaci. Podobně je doplňku předloženo konkrétní zobrazení smlouvy dosažitelné prostřednictvím doplňku. Adaptér se používá k tomu, aby hostitelská aplikace a doplněk komunikovaly mezi příslušnými zobrazeními kontraktu. Kontrakty, zobrazení a adaptéry se označují jako segmenty a sada souvisejících segmentů představuje kanál. Kanály jsou základem, na kterém model doplňků .NET Frameworku podporuje zjišťování, aktivaci, izolaci zabezpečení, izolaci spouštění (pomocí domén aplikací i procesů), komunikaci, správu životního cyklu a verzí.
Součet této podpory umožňuje vývojářům vytvářet doplňky, které se integrují s funkcemi hostitelské aplikace. Některé scénáře však vyžadují, aby hostitelské aplikace zobrazovaly uživatelská rozhraní poskytovaná doplňky. Vzhledem k tomu, že každá prezentační technologie v rozhraní .NET Framework má vlastní model pro implementaci uživatelských rozhraní, doplněk .NET Framework nepodporuje žádnou konkrétní prezentační technologii. Místo toho WPF rozšiřuje model doplňku rozhraní .NET Framework o podporu uživatelského rozhraní pro doplňky.
Add-Ins WPF
WPF ve spojení s doplňkem rozhraní .NET Framework umožňuje řešit širokou škálu scénářů, které vyžadují hostitelské aplikace k zobrazení uživatelských rozhraní z doplňků. Konkrétně tyto scénáře řeší WPF s následujícími dvěma programovacími modely:
Doplněk vrátí uživatelské rozhraní. Doplněk vrátí uživatelské rozhraní hostitelské aplikaci prostřednictvím volání metody definované kontraktem. Tento scénář se používá v následujících případech:
Vzhled uživatelského rozhraní, které vrací doplněk, závisí na datech nebo podmínkách, které existují pouze ve stavu běhu, například u dynamicky generovaných sestav.
Uživatelské rozhraní pro služby poskytované doplňkem se liší od uživatelského rozhraní hostitelských aplikací, které můžou doplněk používat.
Doplněk primárně provádí službu pro hostitelskou aplikaci a hlásí stav hostitelské aplikace pomocí uživatelského rozhraní.
Doplněk je uživatelské rozhraní. Doplněk je uživatelské rozhraní definované kontraktem. Tento scénář se používá v následujících případech:
Doplněk neposkytuje jiné služby, než se zobrazují, například inzerování.
Uživatelské rozhraní pro služby poskytované doplňkem je společné pro všechny hostitelské aplikace, které můžou tento doplněk používat, například kalkulačku nebo výběr barvy.
Tyto scénáře vyžadují, aby objekty uživatelského rozhraní mohly být předány mezi hostitelskými aplikacemi a doménami aplikací doplňků. Vzhledem k tomu, že model doplňků .NET Framework spoléhá na vzdálenou komunikaci při přenosu mezi doménami aplikace, musí být objekty, které mezi nimi procházejí, schopné vzdálené komunikace.
Remotable objekt je instance třídy, která provádí jednu nebo více z následujících akcí:
Odvozuje z MarshalByRefObject třídy.
Implementuje rozhraní ISerializable.
Je aplikován atribut SerializableAttribute.
Poznámka:
Další informace týkající se vytváření objektů vzdálené komunikace rozhraní .NET Framework naleznete v tématu Vytváření objektů vzdálené komunikace.
Typy uživatelského rozhraní WPF nemohou být zpřístupněny na dálku. Aby bylo možné tento problém vyřešit, WPF rozšiřuje model doplňku .NET Framework, aby bylo možné zobrazit uživatelské rozhraní WPF vytvořené doplňky z hostitelských aplikací. Tuto podporu poskytuje WPF dvěma typy: INativeHandleContract rozhraní a dvě statické metody implementované FrameworkElementAdapters třídou: ContractToViewAdapter a ViewToContractAdapter. Na vysoké úrovni se tyto typy a metody používají následujícím způsobem:
WPF vyžaduje, aby uživatelská rozhraní poskytovaná doplňky byla třídy, které jsou přímo nebo nepřímo odvozeny od FrameworkElement, například obrazce, ovládací prvky, uživatelské ovládací prvky, panely rozložení a stránky.
Kdekoli smlouva uvádí, že uživatelské rozhraní bude předáno mezi doplňkem a hostitelskou aplikací, musí být deklarováno jako INativeHandleContract (nikoliv jako FrameworkElement); INativeHandleContract je vzdálená reprezentace uživatelského rozhraní doplňku, kterou lze předat přes hranice izolace.
Před předáním z domény aplikace doplňku se FrameworkElement zabalí jako INativeHandleContract pomocí volání ViewToContractAdapter.
Po předání do domény aplikace hostitele musí být INativeHandleContract znovu zabalen jako FrameworkElement voláním ContractToViewAdapter.
Způsob INativeHandleContracta ContractToViewAdapterViewToContractAdapter použití závisí na konkrétním scénáři. Následující části obsahují podrobnosti o jednotlivých programovacích modelech.
Add-In vrátí uživatelské rozhraní.
Aby doplněk vrátil uživatelské rozhraní do hostitelské aplikace, je nutné splnit následující:
Hostitelská aplikace, doplněk a kanál musí být vytvořeny, jak je popsáno v dokumentaci k doplňkům a rozšiřitelnosti rozhraní .NET Framework.
Kontrakt musí implementovat IContract a pro vrácení uživatelského rozhraní kontrakt musí deklarovat metodu s návratovou hodnotou typu INativeHandleContract.
Uživatelské rozhraní, které se předává mezi doplňkem a hostitelskou aplikací, musí přímo nebo nepřímo odvozovat z FrameworkElement.
Uživatelské rozhraní, které vrací doplněk, musí být převedeno z FrameworkElement na INativeHandleContract před překročením hranice izolace.
Vrácené uživatelské rozhraní musí být převedeno z INativeHandleContract na FrameworkElement po překročení hranice izolace.
Hostitelská aplikace zobrazí FrameworkElement, který byl vrácen.
Příklad, který ukazuje, jak implementovat doplněk, který vrací uživatelské rozhraní, naleznete v tématu Vytvoření Add-In, který vrací uživatelské rozhraní.
Add-In je uživatelské rozhraní
Pokud je doplněk uživatelským rozhraním, vyžadují se následující položky:
Hostitelská aplikace, doplněk a kanál musí být vytvořeny, jak je popsáno v dokumentaci k doplňkům a rozšiřitelnosti rozhraní .NET Framework.
Rozhraní kontraktu pro doplněk musí implementovat INativeHandleContract.
Doplněk, který se předává hostitelské aplikaci, musí být přímo nebo nepřímo odvozen z FrameworkElement.
Doplněk se musí převést z FrameworkElement na INativeHandleContract před přechodem hranice izolace.
Doplněk se musí převést z INativeHandleContract na FrameworkElement po překročení hranice izolace.
Hostitelská aplikace zobrazí FrameworkElement, který byl vrácen.
Příklad, který ukazuje, jak implementovat doplněk, který je uživatelským rozhraním, najdete v tématu Vytvoření Add-In, který je uživatelským rozhraním.
Vrácení více uživatelských rozhraní z Add-In
Doplňky často poskytují více uživatelských rozhraní pro zobrazení hostitelských aplikací. Představte si například doplněk, který je uživatelské rozhraní, které také poskytuje informace o stavu hostitelské aplikaci, také jako uživatelské rozhraní. Doplněk, jako je tento, lze implementovat pomocí kombinace technik z Add-In Vrátí uživatelské rozhraní a Add-In modelů uživatelského rozhraní.
Add-Ins a aplikace prohlížeče XAML
V příkladech zatím byla hostitelská aplikace nainstalovanou samostatnou aplikací. Aplikace prohlížeče XAML (XBAPs) ale můžou také hostovat doplňky, i když s následujícími dalšími požadavky na sestavení a implementaci:
Manifest aplikace XBAP musí být nakonfigurován speciálně ke stažení kanálu (složek a sestavení) a sestavení doplňků do mezipaměti aplikace ClickOnce na klientském počítači ve stejné složce jako XBAP.
Kód XBAP ke zjišťování a načítání doplňků musí jako kanál a umístění doplňku používat mezipaměť aplikací ClickOnce pro XBAP.
XBAP musí doplněk načíst do speciálního kontextu zabezpečení, pokud doplněk odkazuje na volné soubory, které jsou umístěny v lokalitě původu; Při hostování prostřednictvím XBAPs můžou doplňky odkazovat pouze na volné soubory, které jsou umístěny v lokalitě původu hostitelské aplikace.
Tyto úlohy jsou podrobně popsány v následujících pododdílech.
Konfigurace potrubí a Add-In pro nasazení ClickOnce
XBAPs se stáhnou do bezpečné složky v mezipaměti nasazení ClickOnce a odtud se spouštějí. Aby XBAP mohl hostovat doplněk, musí být kanál a sestavení doplňku také staženy do bezpečné složky. Abyste toho dosáhli, musíte nakonfigurovat manifest aplikace tak, aby zahrnoval sestavení kanálu i doplňku ke stažení. Toto lze nejsnáze provést v sadě Visual Studio, ale kanál a sestavení doplňků musí být umístěny v kořenové složce hostitelského projektu XBAP, aby Visual Studio mohlo detekovat sestavení kanálu.
Prvním krokem je vytvoření kanálů a sestavení doplňků do kořenového adresáře projektu XBAP nastavením výstupu sestavení projektů jednotlivých sestavení kanálů a doplňků. Následující tabulka ukazuje výstupní cesty sestavení pro projekty sestavení pipeline a projekty sestavení doplňků, které jsou v rámci stejného řešení a kořenové složky jako hostitelský XBAP projekt.
Tabulka 1: Výstupní cesty pro sestavy potrubí hostované XBAP
| Projekt sestavení kanálu | Výstupní cesta kompilace |
|---|---|
| Smlouva | ..\HostXBAP\Contracts\ |
| Add-In Zobrazení | ..\HostXBAP\AddInViews\ |
| Přidat-In-Side adaptér | ..\HostXBAP\AddInSideAdapters\ |
| adaptér Host-Side | ..\HostXBAP\HostSideAdapters\ |
| Add-In | ..\HostXBAP\AddIns\WPFAddIn1 |
Dalším krokem je určení sestavení pipeline a sestavení doplňku jako soubory obsahu XBAPs ve Visual Studiu následujícím způsobem:
Zahrnutí kanálu a sestavení doplňků v projektu tak, že v Průzkumníku řešení kliknete pravým tlačítkem na každou složku kanálu a zvolíte Zahrnout do projektu.
Nastavit Build Action každého pipeline assembly a add-in assembly na Content z okna Vlastnosti.
Posledním krokem je konfigurace manifestu aplikace tak, aby zahrnovala sestavovací soubory pipeline a soubor sestavení doplňku ke stažení. Soubory by se měly nacházet ve složkách v kořenovém adresáři složky v mezipaměti ClickOnce, kterou aplikace XBAP zabírá. Konfiguraci lze v sadě Visual Studio dosáhnout následujícím způsobem:
Klepněte pravým tlačítkem myši na projekt XBAP, klepněte na příkaz Vlastnosti, klepněte na tlačítko Publikovat a potom klepněte na tlačítko Soubory aplikace .
V dialogovém okně Soubory aplikací nastavte stav publikování jednotlivých kanálů a knihovny DLL doplňků na Zahrnout (automaticky) a nastavte skupinu stahování pro každý kanál a knihovnu DLL doplňku na (povinné).
Použití pipeline a Add-In z Application Base
Když jsou pipelina a doplněk nakonfigurované pro nasazení ClickOnce, stáhnou se do stejné složky mezipaměti ClickOnce jako té XBAP. Pokud chcete použít kanál a doplněk z XBAP, musí je kód XBAP získat ze základu aplikace. Různé typy a součásti modelu zásuvných modulů .NET Framework pro použití kanálů a zásuvných modulů poskytují speciální podporu pro tento scénář. Nejprve je cesta identifikována hodnotou výčtu ApplicationBase . Tuto hodnotu použijete s přetíženími příslušných členů doplňku pro použití kanálů, které obsahují následující:
Přístup k lokalitě původu hostitele
Aby doplněk mohl odkazovat na soubory z lokality původu, musí být doplněk načten s úrovní zabezpečení, která je ekvivalentní úrovni hostitelské aplikace. Tato úroveň zabezpečení je identifikována hodnotou výčtu AddInSecurityLevel.Host a předána Activate metodě při aktivaci doplňku.
Architektura Add-In WPF
Na nejvyšší úrovni, jak jsme viděli, WPF umožňuje doplňkům .NET Framework implementovat uživatelská rozhraní (která jsou odvozena přímo nebo nepřímo z FrameworkElement) pomocí INativeHandleContract, ViewToContractAdapter a ContractToViewAdapter. Výsledkem je, že hostitelské aplikaci se vrátí FrameworkElement, které je zobrazeno z uživatelského rozhraní hostitelské aplikace.
V případě jednoduchých scénářů doplňků uživatelského rozhraní je to tolik podrobností, kolik vývojář potřebuje. V případě složitějších scénářů, zejména těch, které se snaží využívat další služby WPF, jako je rozložení, prostředky a datová vazba, je podrobnější znalost toho, jak WPF rozšiřuje model doplňku .NET Framework s podporou uživatelského rozhraní, je nutný k pochopení jeho výhod a omezení.
WPF v podstatě nepředává uživatelské rozhraní z doplňku do hostitelské aplikace; místo toho předává pomocí interoperability WPF popisovač okna Win32 pro uživatelské rozhraní. Pokud je uživatelské rozhraní z doplňku předáno hostitelské aplikaci, dojde k následujícímu:
Pokud jde o doplněk, WPF získá popisovač okna pro uživatelské rozhraní, které bude zobrazeno hostitelskou aplikací. Popisovač okna je zapouzdřen interní WPF třídou, která je odvozená z HwndSource a implementuje INativeHandleContract. Instance této třídy je vrácena funkcí ViewToContractAdapter a je přenesena z domény aplikace doplňku do domény hostitelské aplikace.
Na straně hostitelské aplikace WPF znovu zabalí HwndSource jako interní třídu WPF, která je odvozena od HwndHost a spotřebovává INativeHandleContract. Instanci této třídy vrací ContractToViewAdapter hostitelské aplikaci.
HwndHost slouží k zobrazování uživatelských rozhraní, která jsou identifikována handly oken z uživatelských rozhraní WPF. Další informace najdete v tématu Spolupráce WPF a Win32.
Souhrnně řečeno, INativeHandleContract, ViewToContractAdapter a ContractToViewAdapter existují, aby okenní popisovač pro uživatelské rozhraní WPF byl předán z doplňku do hostitelské aplikace, kde je zapouzdřen HwndHost a integrován do uživatelského rozhraní hostitelské aplikace.
Poznámka:
Vzhledem k tomu, že hostitelská aplikace získá HwndHost objekt, nemůže převést objekt vrácený ContractToViewAdapter na typ, který je implementován jako doplněk (například UserControl).
Podle své povahy má určitá omezení, HwndHost která ovlivňují způsob jejich použití hostitelskými aplikacemi. WPF ale rozšiřuje HwndHost o několik možností pro scénáře doplňků. Tyto výhody a omezení jsou popsány níže.
WPF Add-In Výhody
Vzhledem k tomu, že se uživatelská rozhraní doplňku WPF zobrazují z hostitelských aplikací pomocí interní třídy odvozené z HwndHost, jsou tato uživatelská rozhraní omezena schopnostmi HwndHost s ohledem na služby uživatelského rozhraní WPF, jako jsou rozložení, vykreslování, vazby dat, styly, šablony a prostředky. WPF ale rozšiřuje svou interní HwndHost podtřídu o další funkce, které zahrnují následující:
Přepínání mezi uživatelským rozhraním hostitelské aplikace a uživatelským rozhraním doplňku. Všimněte si, že programovací model "doplňku je uživatelské rozhraní" vyžaduje, aby adaptér doplňku přepsal QueryContract, k umožnění záložkování, ať už je doplněk plně důvěryhodný nebo částečně důvěryhodný.
Splnění požadavků na přístupnost pro uživatelská rozhraní doplňků, které se zobrazují z uživatelských rozhraní hostitelské aplikace
Povolení bezpečného spouštění aplikací WPF ve scénářích s více doménami aplikací
Zabránění neoprávněnému přístupu k okenním úchytům uživatelského rozhraní doplňku při spuštění doplňků v izolovaném zabezpečení (to znamená v částečně důvěryhodném bezpečnostním sandboxu). Volání ViewToContractAdapter zajišťuje toto zabezpečení:
Pro model programování, kde doplněk vrací uživatelské rozhraní, je jediným způsobem, jak předat popisovač okna pro uživatelské rozhraní doplňku přes hranici izolace, volat ViewToContractAdapter.
Pro programovací model doplňku kde doplněk funguje jako uživatelské rozhraní, je nezbytné přepsat QueryContract na adaptér na straně doplňku a zavolat ViewToContractAdapter (jak je ukázáno v předchozích příkladech), stejně jako zavolat implementaci adaptéru
QueryContractdoplňku z adaptéru hostitelské strany.
Poskytuje ochranu proti spuštění více domén aplikace. Kvůli omezením domén aplikací způsobují neošetřené výjimky, které jsou vyvolány v doménách aplikací doplňků, chybové ukončení celé aplikace, i když existuje hranice izolace. WpF a doplněk .NET Framework však poskytují jednoduchý způsob, jak tento problém obejít a zlepšit stabilitu aplikací. Doplněk WPF, který zobrazuje uživatelské rozhraní, vytvoří Dispatcher vlákno, na kterém běží doména aplikace, pokud hostitelská aplikace je aplikace WPF. Neošetřené výjimky, ke kterým dochází v aplikační doméně, můžete zjistit zpracováním události doplňku WPF UnhandledExceptionDispatcher. Dispatcher můžete získat z vlastnosti CurrentDispatcher.
Omezení WPF Add-In
Kromě výhod, které WPF přidává k výchozímu chování poskytovanému HwndSource, HwndHost a okenními obslužnými programy, existují také omezení pro uživatelská rozhraní doplňků, která se zobrazují v hostitelských aplikacích:
Uživatelská rozhraní doplňků zobrazená z hostitelské aplikace nerespektují chování při výřezu hostitelské aplikace.
Koncept vzdušného prostoru ve scénářích interoperability se vztahuje také na doplňky (viz Přehled technologických oblastí).
Služby uživatelského rozhraní hostitelské aplikace, jako je dědičnost prostředků, datová vazba a provádění příkazů, nejsou automaticky dostupné pro uživatelská rozhraní doplňků. Pokud chcete těmto službám poskytnout doplněk, musíte kanál aktualizovat.
Uživatelské rozhraní doplňku nelze otočit, škálovat, zkosit nebo jinak ovlivnit transformací (viz Přehled transformací).
Obsah uvnitř uživatelských rozhraní doplňků, které jsou vykresleny operacemi kreslení z System.Drawing oboru názvů, mohou zahrnovat alfa míchání. Ale jak uživatelské rozhraní doplňku, tak uživatelské rozhraní hostitelské aplikace, které ho obsahuje, musí být 100% neprůhlené; Jinými slovy,
Opacityvlastnost na obou musí být nastavena na hodnotu 1.AllowsTransparency Pokud je vlastnost okna v hostitelské aplikaci obsahující uživatelské rozhraní doplňku nastavena na
true, doplněk je neviditelný. To platí i v případě, že uživatelské rozhraní doplňku je 100% neprůhlené (to znamená, žeOpacityvlastnost má hodnotu 1).Uživatelské rozhraní doplňku se musí zobrazit nad ostatními prvky WPF ve stejném okně nejvyšší úrovně.
Pomocí VisualBrush nelze vykreslit žádnou část uživatelského rozhraní doplňku. Místo toho může doplněk pořídit snímek vygenerovaného uživatelského rozhraní a vytvořit rastrový obrázek, který lze předat hostitelské aplikaci pomocí metod definovaných kontraktem.
Multimediální soubory nelze přehrát z uživatelského rozhraní doplňku MediaElement .
Události myši generované pro uživatelské rozhraní doplňku nejsou přijaty ani vyvolány hostitelskou aplikací a
IsMouseOvervlastnost uživatelského rozhraní hostitelské aplikace má hodnotufalse.Když se fokus přesune mezi ovládacími prvky v uživatelském rozhraní doplňku, události
GotFocusaLostFocusnebudou ani přijaty, ani vyvolány hostitelskou aplikací.Část hostitelské aplikace, která obsahuje uživatelské rozhraní doplňku, se při tisku zobrazí bíle.
Všechny dispečery (viz Dispatcher) vytvořené uživatelským rozhraním doplňku musí být ručně vypnuty, než je doplněk vlastníka odpojen, pokud hostitelská aplikace pokračuje v provádění. Kontrakt může implementovat metody, které hostitelské aplikaci umožňují signalizovat doplněk před uvolněním doplňku, čímž umožní uživatelské rozhraní doplňku vypnout jeho dispečery.
Pokud je uživatelské rozhraní doplňku InkCanvas nebo obsahuje InkCanvas, nemůžete doplněk odpojit.
Optimalizace výkonu
Ve výchozím nastavení se při použití více domén aplikací načtou do domény této aplikace různá sestavení rozhraní .NET Framework vyžadovaná jednotlivými aplikacemi. V důsledku toho může mít čas potřebný k vytvoření nových domén aplikace a spouštění aplikací v nich vliv na výkon. Rozhraní .NET Framework však poskytuje způsob, jak zkrátit časy spuštění tím, že aplikace instruuje ke sdílení sestavení napříč aplikačními doménami, pokud jsou tato sestavení již načtena. Provedete to pomocí atributu LoaderOptimizationAttribute , který se musí použít pro metodu vstupního bodu (Main). V tomto případě musíte k implementaci definice aplikace použít pouze kód (viz Přehled správy aplikací).
Viz také
.NET Desktop feedback