C#|线程执行后程序不执行任何操作

标签 c# multithreading thread-safety arraylist

我的线程应该返回一个数组列表并将其放入文件中。
我的问题是它就停止了(至少我是这么认为的)。
主题:

 ArrayList files = new ArrayList();
            Thread getF = new Thread(delegate()
            {
                files = GetFiles(path);
            });
            getF.Start();
            if (getF.ThreadState == ThreadState.Stopped)
            {
                MessageBox.Show(files.Count.ToString());
                foreach (string file in files)
                {
                    if (file != "")
                    {...

获取文件:

ArrayList results = new ArrayList();
            try
            {
             *loops**code*...
            results.Add(srl);//add file to arrFiles
            *end loops*

                MessageBox.Show("Complete");
                return results;
            }

程序只是给我 MessageBox.Show("Complete"),然后什么也不做。 提前致谢。

最佳答案

        getF.Start();
        if (getF.ThreadState == ThreadState.Stopped)
        {
           //...
        }

if() 语句永远不会执行。线程完成其工作需要时间。您必须插入 getF.Join() 但这违背了使用线程的意义。

使用BackgroundWorker类。

关于C#|线程执行后程序不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717408/

相关文章:

c# - 如何每次在每个测试方法(包含在同一测试装置中)之前初始化实例变量(在 nunit 的测试装置中声明)?

c# - 如果其中一个列表为空,如何将多个列表相交?

c# - C#中的多线程压缩

java - (Java) 线程不会执行

java - 这在Java中是线程安全的吗?

c# - MAKEWORD c++ Windows 宏的 C# 等价物是什么?

c# - ArgumentException 和 just Exception 有什么区别?

C++ 从多个线程访问 vector

java - 经典的for循环与并发填充列表中的Arraylist forEach - Java 8

java - 避免 Java 代码中的同步块(synchronized block)