帮助将PYTHON翻译为VB.NET
我正在用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 个回答
这是IronPython代码(也就是“用于.NET的Python”),所以这段源代码使用了.NET框架,就像VB一样,所有的类(甚至是System.Threading.Thread)都可以用同样的方式来使用。
一些小提示:
MessageThread
是从Thread
派生出来的,msg
和no
需要声明为类变量,__init__
是构造函数,成员函数中的self
参数在VB中不需要转码(直接省略就可以)。对于thread_list
,使用List<Thread>
,并为records
中的元组定义一个小结构。
这段代码为每一对消息和编号创建一个线程,并调用sendmsg。第一个“for each ... each.start()”是用来启动线程的(这个线程只会调用sendmsg),而第二个“for each ... each.join()”则是等待每个线程完成。根据记录的数量,这可能会创建很多线程(比如你要发送1000条短信记录),虽然这样做是异步的,但并不一定高效。
这段代码相对简单,符合Python的风格,而如果是在.NET环境下,你可能会想使用线程池或者后台工作者来进行sendmsg的调用。你需要创建一个.NET类,来对应这个(msg,no)的元组,并且可能需要把sendmsg()函数放在这个类里。然后再写.NET代码来加载消息(这在Python代码中没有显示)。通常你也会使用一个泛型的List<>来存放短信记录。接着,线程池会把所有的项目排队,并调用sendmsg。
如果你想让代码尽量和原来的Python代码相似,可以考虑看看IronPython。
(因为sendmsg中的下划线导致文本变成斜体,所以我在我的回复中去掉了下划线。)