帮助翻译PYTHON到VB.NET

时间:2009-05-15 18:13:28

标签: python vb.net multithreading translation

我正在用VB.NET编写一个发送短信的应用程序。

请您发布 PYTHON-> VB.NET 翻译此代码和/或指南?

提前致谢!!!

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

2 个答案:

答案 0 :(得分:1)

此代码为每个msg / no元组创建一个线程,并调用sendmsg。第一个“for each ... each.start()”启动线程(只调用sendmsg),第二个“for each ... each.join()”等待每个线程完成。根据记录的数量,这可能会创建大量的线程(如果您发送1000条SMS记录,那么虽然它是异步的,但这不一定有效。)

代码相对简单和pythonic,而对于.NET,您可能希望使用ThreadPoolBackgroundWorker来执行sendmsg调用。您将需要创建一个等同于元组(msg,no)的.NET类,并且可能将sendmsg()函数放在类本身中。然后创建.NET代码以加载消息(Python代码中未显示)。通常,您将使用通用List<>也可以保存SMS记录。然后ThreadPool会排队所有项目并调用sendmsg。

如果您试图使代码与原始Python保持等效,那么您应该查看IronPython

(sendmsg中的下划线导致文本使用斜体,所以我在回复中删除了下划线。)

答案 1 :(得分:0)

这是IronPython代码(“Python for .NET”),因此源代码使用.NET-Framework就像VB一样,所有类(甚至System.Threading.Thread)都可以按照所示的相同方式使用。

一些提示:

MessageThread派生自Threadmsgno必须声明为类变量,__init__是构造函数,self - 成员函数中的参数未转码为VB(只是将其保留)。对List<Thread>使用thread_list,并为records中的元组定义一个小结构。