帮助将PYTHON翻译为VB.NET

0 投票
2 回答
1534 浏览
提问于 2025-04-15 11:37

我正在用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

这是IronPython代码(也就是“用于.NET的Python”),所以这段源代码使用了.NET框架,就像VB一样,所有的类(甚至是System.Threading.Thread)都可以用同样的方式来使用。

一些小提示:

MessageThread是从Thread派生出来的,msgno需要声明为类变量,__init__是构造函数,成员函数中的self参数在VB中不需要转码(直接省略就可以)。对于thread_list,使用List<Thread>,并为records中的元组定义一个小结构。

1

这段代码为每一对消息和编号创建一个线程,并调用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中的下划线导致文本变成斜体,所以我在我的回复中去掉了下划线。)

撰写回答