我有一个故事板应用程序。当第一个视图在启动时加载时,我有这个代码来实例化我的主要后台线程,它一切正常。
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()。我以为它只应该被调用一次......我从哪里开始我的主要后台线程所以它只能启动一次?
答案 0 :(得分:2)
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();
}