úvodní obrazovka w / status montážní zatížení

hlasů
2

Snažím se vytvořit úvodní obrazovku, která zobrazuje sestavy (všechny odkazované knihovny) Loading stav. Používám AppDomain.AssemblyLoad AssemblyLoadEventHandler delegáta chytit co sestava se načítá, ale problém je událost není spuštěna, když program inicializuje. Snažil jsem se zaregistrovat rutinu události do startu „MyApplication_Startup“, ale nefungovalo to. Tady je můj testovací kód:

    Partial Friend Class MyApplication

    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        AddHandler AppDomain.CurrentDomain.AssemblyLoad, AddressOf MyAssemblyLoadEventHandler
    End Sub

    Sub MyAssemblyLoadEventHandler(ByVal sender As Object, ByVal args As AssemblyLoadEventArgs)
        Console.WriteLine(>>> ASSEMBLY LOADED:  + args.LoadedAssembly.FullName)
        Console.WriteLine()
    End Sub

End Class
Položena 01/01/2009 v 00:47
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Jednou z otázek, budete narazit, je, že sestavení .NET není načten, dokud nejsou potřeba.

Například vytvořit novou sestavu s třídou „Hello World“ v něm, odkazovat jej s spustitelný soubor, pak odstraňte novou sestavu z pracovního adresáře, v žádném okamžiku zjistíte, že je načten.

Dále v případě stisknutí tlačítka, inicializovat třídu „Hello World“, držet sestavu odstraněna z pracovního adresáře a obdržíte chybu, že sestava nelze nalézt po kliknutí na tlačítko.

To je hlavním důvodem, který jako první přístup k databázi je obecně pomalé .Net, a má „zrychlit“ cítí k ní (více budete používat, tím rychleji se dostane), je to proto, že objekty, které používáte ve své datové vrstvy jsou nebyl vložen do běhu až stránkám.

Odpovězeno 02/01/2009 v 15:57
zdroj uživatelem

hlasů
0

Hmm Nejsem si jistý, o syntaxi VB, ale v jazyce C #, tak bych dát do Programu main (...):

static void Main(string[] args)
{
    AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
}

static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
    Console.WriteLine("Loaded " + args.LoadedAssembly.FullName);
}

UPDATE: Použití reflektorů, syntaxe VB se zdá být:

Private Shared Sub Main(ByVal args As String())
    AddHandler AppDomain.CurrentDomain.AssemblyLoad, New AssemblyLoadEventHandler(AddressOf Program.CurrentDomain_AssemblyLoad)
End Sub

Private Shared Sub CurrentDomain_AssemblyLoad(ByVal sender As Object, ByVal args As AssemblyLoadEventArgs)
    Console.WriteLine(("Loaded " & args.LoadedAssembly.FullName))
End Sub
Odpovězeno 01/01/2009 v 01:11
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more