>我有一个故事板应用程序。 当启动时加载第一个视图时,我有此代码来实例化我的主后台线程,并且一切正常。
public override void AwakeFromNib()
{
base.AwakeFromNib();
// Perform one-time initialization in this function
// Create and start the main worker thread
MainBackgroundThread = new Thread(new ThreadStart(MainLoop.RunWorker));
MainBackgroundThread.Start();
}
但是,当用户转到不同的视图,然后通过 segue 返回到第一个视图时,将再次调用 AwakeFromNib((。 我以为它只应该叫一次... 我在哪里开始我的主后台线程,所以它只启动一次?
每次
从情节提要/Segue加载该视图的新实例时都会调用AwakeFromNib
。如果要在情节提要中运行,则应期望每次都调用AwakeFromNib
,因为您实际上是从 nib 对象创建视图的新实例。如果要启动后台线程,可以尝试如下操作:
public override void AwakeFromNib()
{
static NSThread * thread;
base.AwakeFromNib();
// Perform one-time initialization in this function
// Create and start the main worker thread
if(!thread)
{
thread = new Thread(new ThreadStart(MainLoop.RunWorker));
}
MainBackgroundThread = thread;
MainBackgroundThread.Start();
}