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".