Einzelnen Beitrag anzeigen

Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Thread aufrufen, 1x laufen lassen, fertig

  Alt 1. Jul 2005, 21:45
Zitat von MathiasSimmack:

In CSharp habe ich das jetzt so versucht:

Code:
public sealed class MergeNamespace
{
   #region ConsoleMerge
   public static void CallConsoleMerge(string namespaceName)
   {
      try {
         HxSession session       = new HxSession();
         session.Initialize(String.Format("ms-help://{0}", namespaceName), 0);
         IHxCollection collection = session.Collection;

         collection.MergeIndex();
      }
      catch {
      }
   }
   #endregion

   #region UiMerge
   private static bool threadIsBusy = false;
   private static string nspaceName = String.Empty;
   private static Thread mergeThread = null;

   public static bool ThreadIsBusy
   {
      get {
         return threadIsBusy;
      }
   }

   private static void ThreadProc()
   {
      CallConsoleMerge(nspaceName);
      threadIsBusy = false;
      try {
         mergeThread.Join();
      }
      catch {
      }
   }

   public static void CallUiMerge(string namespaceName)
   {
      if(namespaceName == null || namespaceName == "") return;

      threadIsBusy = true;
      nspaceName  = namespaceName;
      mergeThread = new Thread(new ThreadStart(ThreadProc));
      mergeThread.Start();
   }
   #endregion

   public MergeNamespace()
   {
   }
}
Prinzipiell klappt es auch, , nur der Thread wird nicht ordnungsgemäß freigegeben/entfernt, so dass ein zweiter Aufruf nicht mehr funktioniert.
Echt der Code funktioniert bei dir? Ich bekomme schon beim Ersten Aufruf nach ein paar Sekunden die Fehlermeldung "COMException 0x800403BD".
André
  Mit Zitat antworten Zitat