On May 27, 11:25 pm, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote: > En Sun, 27 May 2007 09:07:36 -0300, momobear <[EMAIL PROTECTED]> escribió: > > >> Instead of extending join(), write a specific method to signal the > >> quitEvent or just let the caller signal it. And I don't see in this > >> example why do you need two different events (one on the thread, another > >> on the service controller), a single event would suffice. > > > I don't think a single event is enought, since I think the event > > python created and windows event are not same kind of event. > > They are not the same object, of course (altough the threading.Event > object relies eventually on a mutex implemented using CreateEvent). But in > this case both can be successfully used; of course, having the Python > object a more "pythonic" interfase (not a surprise!), it's easier to use. > The same example modified using only a threading.Event object (and a few > messages to verify how it runs): > > import threading > from win32api import OutputDebugString as ODS > > class workingthread(threading.Thread): > def __init__(self, quitEvent): > self.quitEvent = quitEvent > self.waitTime = 1 > threading.Thread.__init__(self) > > def run(self): > while not self.quitEvent.isSet(): > ODS("Running...\n") > self.quitEvent.wait(self.waitTime) > ODS("Exit run.\n") > > import win32serviceutil > import win32event > > class testTime(win32serviceutil.ServiceFramework): > _svc_name_ = "testTime" > _svc_display_name_ = "testTime" > _svc_deps_ = ["EventLog"] > > def __init__(self, args): > win32serviceutil.ServiceFramework.__init__(self, args) > self.hWaitStop = threading.Event() > self.thread = workingthread(self.hWaitStop) > > def SvcStop(self): > self.hWaitStop.set() > > def SvcDoRun(self): > self.thread.start() > self.hWaitStop.wait() > self.thread.join() > > if __name__ == '__main__': > win32serviceutil.HandleCommandLine(testTime) > > -- > Gabriel Genellina
Great! thanks, now I understand the real work of the python windows service. -- http://mail.python.org/mailman/listinfo/python-list