多线程问题

时间:2011-04-12 14:10:51

标签: mysql vb.net multithreading

我正在尝试为游戏制作服务器程序,我需要在Windows窗体应用程序中运行3个额外的线程。所有线程都需要能够访问相同的变量,(thread1:将从我的数据库中提取用户命令并执行它们,thread2:将更新所有用户数据和thread3:将发送所有新的变量回到数据库。)我已经查看了后台线程,我不确定那是否会做我想要的东西(他们看起来像他们可以运行我的代码,但看起来他们会很难对所有线程使用相同变量的时间。)

所以我想我的问题是,这是否可行以及实现这一目标的最佳方法是什么,后台工作人员和调用会做什么?我会在做什么问题,任何人都有更好的主意。

另一方面,我有另一个问题,即我已经尝试了很多次使用简单的线程完成此操作。现在从我的理解做起我在另一个线程上的所有工作不应该锁定我的ui,但它确实如此。也许我正在以错误的方式做线程,我的代码看起来像

dim newthread as new system.threading.thread(addressof runmycode)   
newthread.start()`

这段代码不准确但是为什么使用这样的线程会锁定UI?它不应该单独运行吗?

2 个答案:

答案 0 :(得分:0)

您需要创建对象类的“新”实例以“线程化”并公开您要调用的函数,例如。

Public Class MyNewCode
    Public Function runmycode()

        ' My code goes here '

    End Function
End Class


Public Class frmMain ' or under an onClick event or whatever.... '
    Dim s As New MyNewCode ' This is the class above '
    t = New System.Threading.Thread(AddressOf s.runmycode) ' This is the function above '
    t.start()
End Class

答案 1 :(得分:0)

这是我在前面写的一篇教程,它将指导您在VB2008中创建一个基本的多线程程序。使用VB2010,您可以根据需要删除代理,但想法几乎相同。

Creating a simple multi-threaded VB.Net application