我有一个CheckedListBox,我想在一个项目被检查后我想要一个事件,以便我可以使用具有新状态的CheckedItems.
由于在CheckedItems更新之前触发了ItemChecked,因此它不会开箱即用.
更新CheckedItems时,我可以使用哪种方法或事件来通知?
是否有一个很好的简单方法来延迟函数调用,同时让线程继续执行?
例如
public void foo()
{
// Do stuff!
// Delayed call to bar() after x number of ms
// Do more Stuff
}
public void bar()
{
// Only execute once foo has finished
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过使用计时器和事件处理程序来实现,但我想知道是否有一种标准的c#方式来实现这一目标?
如果有人好奇,那么需要的原因是foo()和bar()在不同的(单例)类中,我需要在特殊情况下相互调用.问题是这是在初始化时完成的,所以foo需要调用bar,它需要一个正在创建的foo类的实例...因此延迟调用bar()以确保foo完全实例化.读回来几乎是糟糕的设计!
编辑
我会在建议下接受关于糟糕设计的观点!我一直认为我可能能够改进系统,但是,这种令人讨厌的情况只会在抛出异常时发生,而在其他所有其他时候两个单身人士共存非常好.我认为我不会讨厌令人讨厌的异步模式,而是我要重构其中一个类的初始化.