| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivWorkshop 93: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: dfense | Workshop anzeigenDatum: 16.02.09 15:19 |
| Funktioniert nur, solange ich keine GUI Actions mache. D.h., ich damit bin ich nicht in der Lage, im Hostprogramm eine weitere TabPage zu erstellen.
Hat da jemand Erfahrung mit?
VG | |
Re: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: mb2k3 | Datum: 10.08.09 16:09 |
| Ich hoffe, ich kann mich hier noch anschließen.
Und zwar dreht es sich um folgendes Problem.
Ich habe eine Anwendung, die bestimmte Bibliotheken zur Laufzeit laden und entladen kann.
Nun ist es so, dass eine Bibliothek bestimmte Unterbibliotheken mit sich bringt, die benötigt werden.
Durch setzen der ApplicationBase-Eigenschaft findet die Hauptbibliothek auch die Funktionen in den Unterbibliotheken.
Solange ich mit so einem "Plugin" in der Anwendung stetig arbeite, läuft alles wunderbar.
Tue ich aber einige Minuten nichts mit der Anwendung, fängt irgendwo im Hintergrund das Framework an, der Bibliothek untergeordnete Bibliotheken aus dem Speicher zu schmeißen. ?!
Das endet damit, dass ich eine Fehlermeldung wie: "Das Objekt blablabla wurde getrennt oder ist nicht mehr auf dem Server verfügbar!" bekomme.
Meine Frage ist nun, was kann ich dagegen tun? Das setzen der Lebensdauer hat mir insofern geholfen, dass er mir nicht auch noch das Ganze Plugin aus dem speicher fegt. Wie kann ich jedoch für die Unterbibliotheken eine Lebensdauer festlegen?
Vielen Dank!
Matthias Bergen | |
Re: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: deBloi | Datum: 14.01.10 16:03 |
| Ich habe ein ähnliches Problem wie mein Vorgänger... ein eigentlich funzendes Pluginsystem, welches meine PlugIns erfolgreich läd und bei bedarf auch entläd.
Jedoch wird die Verbindung zu den Bibliotheken wenn sie eine bestimmte Zeit lang (ca. 2min) nicht gefordert werden vom netframework getrennt.
Um die Lebensdauer der Bibliothek auf unendlich zu setzen, überschreibe ich auch wie in unzähligen Beiträgen beschrieben die InitializeLifeTimeService auf Nothing.
Leider scheint diese Prozedur wirkungslos zu sein...
Was mach ich falsch?
Danke im Vorraus....
Hier etwas Code vom PlugIn
<Serializable()> Public Class clsPlugin 'Make it creatable on Runtime
Inherits MarshalByRefObject 'AppDomain Compatibility
Implements clsPluginLoader.clsPluginLoader.IPlugin
'Link this class to the plugin interface IPlugin
Dim myHost As clsPluginLoader.clsPluginLoader.IHost
Public Overrides Function InitializeLifeTimeService() As Object
'Make the plugin-lifetime unlimited (otherwise it will expire)
Return Nothing
End Function
Public Sub SetHost(ByVal mHost As clsPluginLoader.clsPluginLoader.IHost) _
Implements clsPluginLoader.clsPluginLoader.IPlugin.SetHost
myHost = mHost 'Set a link to objects of the main-application
End Sub
Public Function GetName() As String Implements _
clsPluginLoader.clsPluginLoader.IPlugin.GetName 'Get the plugin name
Return "Aktueller Tag"
End Function
Public Function GetString(ByVal myZahlungsart As String) As String _
Implements clsPluginLoader.clsPluginLoader.IPlugin.GetString 'Get the
' plugin name
Dim myDate As DateTime
myDate = System.DateTime.Today
Dim startDate As DateTime
Dim endDate As DateTime
startDate = System.DateTime.Today & " 00:00:00"
endDate = System.DateTime.Today & " 23:59:59"
Dim mySQLString As String = ""
Select Case myZahlungsart
Case Is = "Soll"
mySQLString = "AND (KDI.DebitorSoll_Buchungsdatum >= '" & _
startDate & "')" _
& " AND (KDI.DebitorSoll_Buchungsdatum <= '" & endDate & "')"
Case Is = "IST"
mySQLString = " AND (KDI.DebitorIST_Buchungsdatum >= '" & _
startDate & "')" _
& " AND (KDI.DebitorIST_Buchungsdatum <= '" & endDate & "')"
End Select
Return mySQLString
End Function
Public Sub Load() Implements clsPluginLoader.clsPluginLoader.IPlugin.Load
'When the plugin is loaded
'System.Windows.Forms.MessageBox.Show("Plugin is loaded 4Plugin")
End Sub
Public Sub Unload() Implements _
clsPluginLoader.clsPluginLoader.IPlugin.Unload
'When the plugin is unloaded
'System.Windows.Forms.MessageBox.Show("Plugin is unloaded 4Plugin")
End Sub
Public Sub Run() Implements clsPluginLoader.clsPluginLoader.IPlugin.Run
myHost.myLabel.Text = "Aktueller Tag"
End Sub
End Class Hier der PlugInLoader:
Public Class clsPluginLoader
Public Interface IPlugin
Function GetName() As String
Function GetString(ByVal myZahlungsart As String) As String
Sub Load()
Sub Unload()
Sub Run()
Sub SetHost(ByVal mHost As IHost)
End Interface
Public Interface IHost
Function myLabel() As System.Windows.Forms.Label
End Interface
End Class | |
Re: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: dfense | Datum: 14.01.10 18:37 |
| InitializeLifeTimeService=Nothing? So ein quatsch. Schau dir bitte die Schnittstellen ILease/ISponsor an. Damit kannst du beim "Lebensablauf" deines MarshalByRef-Objektes die Lebensdauer verlängern. Z.B. immer wieder auf 30 Min. Das ist genau das was du suchst. Und im übrigen wird nichts getrennt, sondern aufgeräumt . Das scheinen viele nicht zu beachten, wenn es um Remoting geht. Muss man aber auch erstmal drauf kommen... ;-P
VG,
dfense | |
Re: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: deBloi | Datum: 14.01.10 19:17 |
| Danke für Deine Antwort...
Hm, habe bis jetzt angenommen, dass bei
Public Overrides Function InitializeLifeTimeService() As Object
'Make the plugin-lifetime unlimited (otherwise it will expire)
Return Nothing
End Function die Lebenszeit des Objektes auf unendlich gesetzt wird.
Ich werde mir bei nächster Gelegenheit die MarshalByRef Objects anschauen und hoffe ich werde daraus schlauer.
Falls nicht melde ich mich noch einmal auf diesem Kanal...
Danke erst mal... | |
Re: Erstellen von Plugins zum Erweitern eigener Programme | | | Autor: Jan5366 | Datum: 01.07.14 02:07 |
| Hallo,
leider bekomme ich das mit dem ILease/ISponsor noch nicht wirklich zum Laufen.
Die Englischen Tutorial die ich in Google gefunden habe haben mir auch nicht wirklich weitergeholfen.
Da ich keine Richtigen Code Beispiele gefunden habe :-/
Würde mich sehr um Hilfe freuen !
PS: Ja ich weiß das der letzte Post ~ 4 Jahre alt ist, Sry ^^
Destiny of the Galaxy:
http://www.cendesia.de
http://www.facebook.com/Cendesia
- Weltraum RPG mit Vb.Net und DirectX9
- jetzt kostenlos die Pre-Alpha testen | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|