2011-12-18 8 views
0

私は、pys60を使用してシンビアン用のsmsアプリケーションを開発しています。 私はSMSを送信するためのスレッドを作成しましたが、まだ動作していません。
このスレッドは、アプリケーションが閉じられているかどうかに関係なく、バックグラウンドで実行します。
contact indexは、連絡先と名前のある辞書です。pys60スレッドがシンビアン・パイソンで動作しない

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

「send sms threadを入力しました」と表示されますが、それ以降は表示されません。
機能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

はい。 replies.iのおかげで同じことを作成することについてのアイデアはありません。もしあなたがそれを知っていれば、親切に私に知らせてくれますか? – 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がバックグラウンドで実行されている機能です。

関連する問題