Eventi
19 nov, 23 - 21 nov, 23
Ottenere il vantaggio competitivo necessario con potenti soluzioni di intelligenza artificiale e cloud partecipando a Microsoft Ignite online.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
La maggior parte delle classi di Windows Runtime sono agile, quindi è possibile accedervi da qualsiasi thread in diversi apartment. I tipi C#/WinRT creati sono agile per impostazione predefinita e non è possibile annullare questo comportamento per tali tipi.
Tuttavia, i tipi C#/WinRT previsti (che includono i tipi di Windows Runtime forniti da Windows SDK e dalla libreria WinUI) potrebbero essere o non essere agile. Ad esempio, molti tipi che rappresentano oggetti dell'interfaccia utente non sono agili. Quando vengono consumati tipi non-agile, è necessario prendere in considerazione il modello di threading e il comportamento del marshaling. C#/WinRT fornisce supporto per riferimenti agile se si necessita di effettuare il marshalling di un oggetto non-agile in più apartment in modo sicuro.
Nota
Windows Runtime è basato su COM. In base a COM, una classe Agile viene registrata con ThreadingModel
= Both. Per altre informazioni sui modelli di threading COM, vedi Informazioni e uso dei modelli di threading COM.
Per verificare se un oggetto di Windows Runtime è agile, usare il codice seguente per determinare se l'oggetto supporta l'interfaccia IAgileObject.
var queryAgileObject = testObject.As<IAgileObject>();
if (queryAgileObject != null) {
// testObject is agile.
}
Per creare un riferimento agile per un oggetto non-agile, è possibile usare il metodo di estensione AsAgile
. AsAgile
è un metodo di estensione generico che può essere applicato a qualsiasi tipo C#/WinRT previsto. Se il tipo non è un tipo previsto, viene restituita un'eccezione. Segue un esempio che usa un oggetto PopupMenu, che è un topo non-agile di Windows SDK.
var nonAgileObj = new Windows.UI.Popups.PopupMenu();
AgileReference<Windows.UI.Popups.PopupMenu> agileReference = nonAgileObj.AsAgile();
Ora è possibile passare agileReference
a un thread in un apartment diverso e usarlo lì.
await Task.Run(() => {
Windows.UI.Popups.PopupMenu nonAgileObjAgain = agileReference.Get()
});
Feedback su Windows developer
Windows developer è un progetto di open source. Selezionare un collegamento per fornire feedback:
Eventi
19 nov, 23 - 21 nov, 23
Ottenere il vantaggio competitivo necessario con potenti soluzioni di intelligenza artificiale e cloud partecipando a Microsoft Ignite online.
Iscriviti subitoFormazione
Modulo
Scegliere un approccio Agile allo sviluppo software - Training
Il team Web che sta lavorando a Space Game spiega come usare Azure Boards per implementare procedure software Agile con la trasparenza e la collaborazione di DevOps.