के अंदर मुझे यह त्रुटि विंडोज सेवा में प्राप्त होती है। यह एक ही सेवा है कि मैं पहले से मेरे सवाल hereएपडोमेन को उतारने में त्रुटि। (HRESULT से अपवाद: 0x80131015), विंडोज सेवा
में चर्चा की है कोड Parallel.ForEach
(मेरे अपने संस्करण के रूप में यह एक 3.5 खिड़कियों सेवा है) का उपयोग करने के लिए संशोधित किया गया है। समांतर उपयोग का कारण इस तथ्य से नीचे है कि प्रत्येक डोमेन को उतारने और उन्हें समानांतर में चलाने के लिए बहुत लंबा समय लगता है (यह प्रतीत होता है कि केवल एक थ्रेड है जो प्रत्येक अनलोड कर रहा है ?!)।
अन्य पदों के आधार पर, मैं केवल अनुमान लगा सकते हैं कि यह किसी भी तरह है नीचे इस तथ्य की ओर मैं एक ThreadPool
Thread
Unload
को AppDomain
रों उपयोग कर रहा हूँ। मैं बस यह नहीं देख सकता कि इसे कैसे बचें?
public partial class SomeService : ServiceBase
{
private Manager _appDomainManager;
protected override void OnStop()
{
_appDomainManager.Dispose();
}
}
public class Manager : IDisposable
{
public void Dispose()
{
Log.Debug("Disposing");
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (_disposed) return;
if (disposing)
{
// dispose managed resources
Parallel.For(0, appdomains.Length, UnloadAppDomian);
}
_disposed = true;
}
}
private UnloadAppDomain(int appDomainIndex);
public static class Parallel35
{
public static void For(int start, int end, Action<int> action)
{
var waitHandles = new WaitHandle[end - start];
for (int j = 0; j < waitHandles.Length; j++)
{
waitHandles[j] = new ManualResetEvent(false);
}
for (int i = start; i < end; i++)
{
int i1 = i - start;
ThreadPool.QueueUserWorkItem(
state =>
{
try
{
action((int) state);
}
finally
{
((ManualResetEvent) waitHandles[i1]).Set();
}
}, i);
}
WaitHandle.WaitAll(waitHandles);
}
}
क्या आपने थ्रेड विंडो का उपयोग करके यह ठीक होने पर यह देखने के लिए अपनी सेवा में डीबगर संलग्न करने का प्रयास किया है? वैसे, क्या आपने प्रत्येक AppDomain के लिए एक पृष्ठभूमि कार्य की बजाय एक ही पृष्ठभूमि कार्य में सभी AppDomains को अनलोड करने का प्रयास किया है? –
@PanosRontogiannis समस्या तब थी जब मैंने इसे एक पृष्ठभूमि थ्रेड में चलाया था, इसे 'ऑनस्टॉप' के लिए बस इतना लंबा लगा। अभी भी समस्या के रूप में कुछ संदेह के साथ जांच। –