<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AB-WebLog.com&#187; IPC</title>
	<atom:link href="http://www.ab-weblog.com/de/schlagwort/ipc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ab-weblog.com/de</link>
	<description>Andreas Breitschopp</description>
	<lastBuildDate>Mon, 23 Nov 2015 08:51:46 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>RemotingException bei Verwendung von IPC mit .NET</title>
		<link>http://www.ab-weblog.com/de/remotingexception-bei-verwendung-von-ipc-mit-net/</link>
		<comments>http://www.ab-weblog.com/de/remotingexception-bei-verwendung-von-ipc-mit-net/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 23:14:12 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Dienst]]></category>
		<category><![CDATA[IPC]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=369</guid>
		<description><![CDATA[In einem Projekt verwende ich IPC (Inter Process Communication) zur gemeinsamen Benutzung von Objekten eines Windows-Dienstes mit einer Client-Anwendung. Das funktioniert stets problemlos, wenn die Client-Anwendung das erste Mal startete und die Objekte des Windows-Dienste aufrief. Aber nachdem die Client-Anwendung &#8230; <a href="http://www.ab-weblog.com/de/remotingexception-bei-verwendung-von-ipc-mit-net/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In einem Projekt verwende ich IPC (Inter Process Communication) zur gemeinsamen Benutzung von Objekten eines Windows-Dienstes mit einer Client-Anwendung.</p>
<p>Das funktioniert stets problemlos, wenn die Client-Anwendung das erste Mal startete und die Objekte des Windows-Dienste aufrief. Aber nachdem die Client-Anwendung einige Minuten später neu gestartet wurde (ohne den Dienst neu zu starten), kam es zu einer <em>RemotingException</em> mit dieser seltsamen Fehlermeldung:</p>
<pre class="brush: text; gutter: false">Fehler beim Schreiben auf einen IPC-Port. Die Pipe wird gerade geschlossen.</pre>
<p>Es hat eine ganze Weile gedauert bis ich das Problem gefunden habe:<br />
Da es für meinen Dienst sehr wichtig ist wirklich nur eine Instanz des Remote-Objektes für die gesamte Lebensdauer des Dienstes zu haben, verwendete ich <em>RemotingServices.Marshal</em>, um ein zuvor instanziiertes Objekt zu registrieren. Jedoch wusste ich nicht, dass bei der Registrierung mit dieser Methode die Objekte standardmäßig nur eine sehr kurze Zeit (eine Minute) gültig bleiben.</p>
<p>Um das zu korrigieren, muss die Methode <em>MarshalByRefObject.InitializeLifetimeService</em> innerhalb des Remote-Server-Objektes wie folgt überschrieben werden:</p>
<pre class="brush: csharp; gutter: true">public override Object InitializeLifetimeService()
{
	ILease lease = (ILease)base.InitializeLifetimeService();
	if (lease.CurrentState == LeaseState.Initial)
	{
		lease.InitialLeaseTime = TimeSpan.FromDays(365);
		lease.SponsorshipTimeout = TimeSpan.FromDays(365);
		lease.RenewOnCallTime = TimeSpan.FromDays(365);
	}
	return lease;
}</pre>
<p>Und hier dasselbe für Entwickler mit VB .NET:</p>
<pre class="brush: vbnet; gutter: true">Public Overrides Function InitializeLifetimeService() As Object
	Dim lease As ILease = CType(MyBase.InitializeLifetimeService(), ILease)
	If lease.CurrentState = LeaseState.Initial Then
		lease.InitialLeaseTime = TimeSpan.FromDays(365)
		lease.SponsorshipTimeout = TimeSpan.FromDays(365)
		lease.RenewOnCallTime = TimeSpan.FromDays(365)
	End If
	Return lease
End Function</pre>
<p>OK, 365 Tage sind vielleicht etwas übertrieben, aber so können Sie sicher sein, dass Ihre Remote-Objekte so schnell nicht verfallen werden. <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Haben Sie diese Problem selbst auch schon einmal gehabt?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/remotingexception-bei-verwendung-von-ipc-mit-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->