2011-12-18 7 views
0

나는 pys60을 사용하여 심비안을위한 sms 응용 프로그램을 개발 중입니다. SMS를 보내기위한 스레드를 만들었지 만, 거기서 작동하지 않습니다.
응용 프로그램이 닫혔는지 여부에 관계없이이 스레드를 백그라운드에서 실행하고 싶습니다.
연락처 색인은 연락처와 이름이있는 사전입니다.pys60 스레드가 symbian python에서 작동하지 않습니다.

def send_sms(contact_index): 
    import thread 
    appuifw.note(u"entered to send sms thread") 
    tid = thread.start_new_thread(send_sms_thread, (contact_index,)) 
    appuifw.note(u"completed") 

"입력 SMS 문자 보내기"가 입력되지만 그 이후는 아닙니다.
기능 sens_sms_thread은 다음과 같습니다

def send_sms_thread(contact_index): 
    appuifw.note(u"entering the thread in sending sms in loops") 
    for numbers in contact_index: 
     name = contact_index[number] 
     appuifw.note(u"sending sms to %s ." % name) 
     messaging.sms_send(numbers, message_content, '7bit', cb, '') 
     e32.ao_sleep(30) 

사람이이 응용 프로그램을 폐쇄 여부의 배경 inrrespective에서 실행이 스레드에 입력되지 않는 이유를 말해 줄 수?

답변

0

threading 모듈을 사용하십시오. 이 모듈에 의해 생성 된 Thread은 프로세스가 종료되기 전에 주 스레드에 의해 대기됩니다.

thread = threading.Thread(target=send_sms_thread, args=(contact_index,)) 
thread.start() 

다른 곳에서 생성되거나 daemon 속성으로 작성된 스레드는 대기되지 않습니다.

+0

나는 threading.therad를 시도했지만 기다린다. 나는 sms가 끝내기를 기다릴 때까지 그것을 원하지 않는다. 내가 send_sms_thread 함수를 백그라운드에서 실행해야합니다 내가 응용 프로그램을 종료하더라도. – sam

+0

@sam : 그러면 새로운 프로세스, 대개 데몬 프로세스를 만들어야합니다. –

+0

예. 대답을 주셔서 감사합니다. 나는 같은 것을 만드는 것에 대해 생각하지 않습니다. 너도 알다시피 친절하게 알려주시겠습니까? – sam

0

다음 조각을 시도해보십시오

if __name__=='__main__': 

    th = e32.ao_callgate(Udp_recv) 
    thread.start_new_thread(th,()) 

    for i in range(10): 
     tmp = (str(i)+data)[0:10] 

Udp_recv 백그라운드에서 실행하는 기능입니다.