2009-05-15 10 views
0

Je suis en train de coder une application dans VB.NET qui envoie des sms.Aide traduction PYTHON à VB.NET

Voulez-vous s'il vous plaît envoyer PYTHON-> VB.NET traduction de ce code et/ou des lignes directrices?

Merci à l'avance !!!

import threading 
class MessageThread(threading.Thread): 
    def __init__(self,msg,no): 
     threading.Thread.__init__(self) 
     self.msg = msg # text message 
     self.no = no # mobile number 
    def run(self): 
     # function that sends "msg" to "no" 
     send_msg(msg,no) 

# records of users are retrived from database 
# and (msg,no) tuples are generated 
records = [(msg1,no1),(msg2, no2),...(msgN,noN)] 

thread_list = [] 

for each in records: 
    t = MessageThread(each) 
    thread_list.append(t) 

for each in thread_list: 
    each.start() 

for each in thread_list: 
    each.join() 
+4

Ce code contient rien de substantiel (il manque send_msg()). En outre, pour des choses comme la traduction de code, vous devriez plutôt aller à RentACoder ou quelque chose comme ça. –

+0

Mettez simplement send_msg tel quel dans le code vb correspondant. –

+1

Oh, si c'est tout ce que vous voulez savoir, alors votre question devrait être "Comment appeler une fonction de manière asynchrone dans VB.NET", parce que c'est tout ce code: appel asynchrone send_sms() pour chaque enregistrement (je pense il y a une faute de frappe, cela devrait être "MessageThread (* each)"). –

Répondre

1

Ce code crée un thread pour chaque mug msg/no et appelle sendmsg. Le premier "pour chaque ... each.start()" démarre le thread (qui appelle uniquement sendmsg) et le second "for each ... each.join()" attend que chaque thread soit terminé. En fonction du nombre d'enregistrements, cela pourrait créer un nombre significatif de threads (si vous envoyiez 1000 enregistrements SMS) ce qui n'est pas forcément efficace bien qu'il soit asynchrone.

Le code est relativement simple et pythonique, tandis que pour .NET, vous voudrez probablement utiliser un ThreadPool ou BackgroundWorker pour effectuer les appels sendmsg. Vous devrez créer une classe .NET qui est équivalente au tuple (msg, no), et mettre probablement la fonction sendmsg() dans la classe elle-même. Puis créez un code .NET pour charger les messages (ce qui n'est pas affiché dans le code Python). En règle générale, vous utiliserez une liste générique <> pour contenir également les enregistrements SMS. Ensuite, le ThreadPool mettrait en file d'attente tous les éléments et appelait sendmsg.

Si vous essayez de conserver le code comme équivalent au Python d'origine, vous devriez regarder IronPython.

(Le trait de soulignement dans le texte sendmsg causé à utiliser italique, alors j'ai enlevé le trait de soulignement dans ma réponse.)

0

Ceci est IronPython-code ("Python for .NET"), d'où le code source utilise le framework .NET, tout comme VB et toutes les classes (même System.Threading.Thread) peuvent être utilisés de la même manière indiquée.

Quelques conseils:

MessageThread dérive de Thread, msg et no doivent être déclarés comme variables de classe, __init__ est le constructeur, le self -parameter dans les fonctions membres ne sont pas transcodé à VB (juste laisser sortir). Utilisez List<Thread> pour thread_list et définissez une petite structure pour les tuples dans records.