【发布时间】:2014-09-19 08:49:12
【问题描述】:
每个人都知道我们正在使用多线程平台,并且我们正在开发多线程应用程序。顺便说一句,我无法识别线程问题。当我调用静态方法(即在另一个类中)时,将运行哪个线程? gui线程是否执行作业并运行方法? IE: (我要给出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线程去工作?
如果要运行新线程,我们为什么以及何时在工作中使用新线程?
如果 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
当我点击这么快(每两秒点击 1 次)时,它会给出错误“另一个进程使用文件”。
如果是这个gui线程,为什么会报错?
如果是新线程,为什么我们要在按钮点击方法中做一些类似gui操作的工作。 ? (大家都知道,做gui操作,我们要用gui线程,对吗?)
第二个代码部分可能是不同的问题,但我只想学习 .net 的 THREAD 背后的逻辑(我认为该逻辑对 java 也有效)
谢谢
编辑:这可能与 JAVA 无关。虽然我给出了vb代码示例,但我添加了java标签,因为我认为逻辑是相同的。
【问题讨论】:
-
我会失明的!为什么是java标签??
-
我认为 .net 线程逻辑与 java 相同。如果你想在java中听到这个问题,我可以给出示例代码。
标签: java .net multithreading logic filestream