每个人都知道我们正在使用多线程平台,我们正在开发多线程应用程序。顺便说一句,我无法识别线程问题。当我调用静态方法(即在另一个类中)时,将运行哪个线程? gui线程去工作和运行方法?即: (我将给出vb代码示例。逻辑与java相同。)
Private Sub runValuesTest_Click(sender As System.Object, e As System.EventArgs) Handles RunValuesTest.Click
DummyClass.Instance.DoJob()
End sub()
这是vb语法,但没关系。主要逻辑与C#和Java相同。当我点击按钮,将是新的线程运行?还是gui线程上班?
如果要运行新线程,我们为什么以及何时使用New Thread来完成工作?
如果gui线程开始,我会看到很多时间在一个程序中运行多个线程。线程如何在程序中有所不同?为何以及何时以某种方式发生线程异常?例如:我正在用这种方法进行文件操作:(这可能是不同的问题)
Private _file As System.IO.StreamWriter
Private Sub runValuesTest_Click(sender As System.Object, e As System.EventArgs) Handles RunValuesTest.Click
If Not Directory.Exists("GraphXml") Then
Directory.CreateDirectory("GraphXml")
End If
_fileName = "GraphXml\Graph_" & txtName & ".xml"
_file = My.Computer.FileSystem.OpenTextFileWriter(_fileName, False)
_file.WriteLine("<?xml version=""1.0"" encoding=""UTF-8""?>")
_file.WriteLine("<n0>")
DepthFirstSearch(StaticService.AllNodes(0))
_file.WriteLine("</n0>")
_file.Close()
_file.Dispose()
End Sub
当我点击这么快(每两秒钟点击一次)时,它会给出错误&#34;另一个进程使用文件&#34;。
如果这个gui线程,为什么会出错?
如果它是新线程,为什么我们在按钮点击方法中做一些像gui操作的人员。 ? (大家都知道,要做gui操作,我们想使用gui线程,我是对的吗?)
这第二个代码部分可能是不同的问题,但我只是想学习.net的THREAD背后的逻辑(我认为逻辑对java也有效)
由于
编辑:这可能与JAVA无关。虽然我给了vb代码示例,但我添加了java标记,因为我认为逻辑是相同的。
答案 0 :(得分:1)
当我调用静态方法(在另一个类中)时,将运行哪个线程?
您不会调用方法。你写代码。 线程调用方法。线程是执行代码的代理。每个程序至少有一个线程。当一个线程调用一个方法(静态或非静态)时,该方法在调用它的线程中调用。
当我点击按钮时,新线程会运行吗?还是gui线程上班?
这是一个关于Visual Basic的问题。我不知道Visual Basic,但许多GUI框架都有一个“事件处理程序线程”。单击按钮时,事件将由事件处理程序线程中运行的框架代码读取。框架确定哪个窗口,哪个窗口小部件等,然后如果您的代码已经注册了处理程序,则事件处理程序线程会调用您的处理程序方法。
要做gui操作,我们想使用gui线程,我是对的吗?)
有许多GUI框架是单线程的强大原因。 https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html但是,如果你问的是Visual Basic,那就是我不知道的事情。
程序中的线程如何不同?
为什么以及何时以某种方式发生线程异常?
...
在尝试用英语提问之前,您需要学习更多英语,或者在尝试询问有关线程的问题之前,您需要了解有关线程的更多信息(通过一些教程)。你的很多问题似乎都没有多大意义。