基本的线程问题

rik*_*rik 3 c# multithreading

如果我有课

public Class foo
{
    public foo()
    {
        myclass = new myclass(param)
        myclass.initiateState();
        val = myclass.getValues();
    }
}
Run Code Online (Sandbox Code Playgroud)

Class.initiateState() 是一个漫长的过程,它在我的GUI构造函数中运行,我想开始用一个线程运行,但是下一行转到同一个类来获取一些数据,但如果我在一个新线程中运行第一行,那么这会得到在完成之前执行.

我怎么解决这个问题?

Øyv*_*hen 11

做一个BackgroundWorker.

DoWork事件方法内,添加myClass.initiateState()调用.在RunWorkerCompleted事件方法内部,调用myClass.getValues();

这将导致initiateState在后台线程上运行,并且当完成时将getValues在GUI线程上触发.

另请注意,在C#中,与Java相比,使用大写字母启动方法名称是正常的.所以方法应该有名称InitiateStateGetValues:)