Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

NotesThread beenden

(1/1)

Sebastianh:
Hallo,

ich habe eine Klasse

--- Code: ---public Class1 extends NotesThread

--- Ende Code ---

die ich wie folgt aufrufe:

--- Code: ---public static void main(String args[]) {
Class1 t = new Class1(args[0]);
t.start();
}

--- Ende Code ---

der auszuführende Code steht in der Methode runNotes() die ich, wie vorgegeben, überschreibe. Nach erfolgreicher Abarbeitung des Codes beendet sich das Programm allerdings nicht, der Thread bleibt aktiv. Wie kann ich das Programm denn terminieren lassen?

NotesThread.currentThread().stop();
NotesThread.currentThread().interrupt();
oder auch:
NotesThread.stermThread();

erzielen nicht die gewünschte Wirkung.

Gruß,
Sebastian

Ralf_M_Petter:
Das kommt auf den Code in dem Thread an. Wenn deine Methode zu einem Ende kommt wird der Thread automatisch beendet. Sonst einfach mal mit dem Debugger deiner Entwicklungsumgebung schauen wo er hängt.

Auf keinen Fall, darfst du dein Programm in der runNotes Methode irgenwie beenden. Das führt auf jeden Fall zu Problemen mit dem C++ Backen.


Grüße

Ralf

P.S. warum verwendest du überhaupt NotesThread ich verwende immer die static Methoden für die Intialisierung siehe Auszug aus der Designer Help

To execute threads through the static methods, call sinitThread() to initialize a thread and stermThread() to terminate the thread. Call stermThread() exactly one time for each call to sinitThread(); putting stermThread in a finally block is recommended.

--- Code: ---
public class myClass
{
    public static void main(String argv[])
    {
        try
        {
            NotesThread.sinitThread();
            // my code
        }
        //my code
        finally
        {
            NotesThread.stermThread();
        }
    }
}

--- Ende Code ---

Sebastianh:
Ok, das mit den statischen Methoden war schonmal ein guter Tip, danke!

Allerdings ist das beobachtete Verhalten das selbe. Mit dem Debugger komme ich (nach Abarbeitung des finally-Blocks) in die Thread.class wo nach Abarbeitung folgenden Codes hängen geblieben wird:


--- Code: ---private void exit() {
   if (group != null) {
      group.remove(this);
         group = null;
   }
   /* Aggressively null out all reference fields: see bug 4006245 */
   target = null;
   /* Speed the release of some of these resources */
   threadLocals = null;
   inheritableThreadLocals = null;
   inheritedAccessControlContext = null;
   blocker = null;
   uncaughtExceptionHandler = null;
}

--- Ende Code ---

Sebastianh:
ok, Problem lag an einem anderen Modul das innerhalb des Codes aufgerufen wurde. Notes ist "ausnahmsweise" mal unschuldig :)

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln