gpt4 book ai didi

delphi - "Long running method is done"有设计模式吗?

转载 作者:行者123 更新时间:2023-12-05 08:44:47 25 4
gpt4 key购买 nike

我有一个方法需要很长时间才能完成,我想定期检查它是否完成了。这就是我想出的(简化代码,Delphi 2007):

type
IWaitForDone = interface
function IsDone: boolean;
end;

function TSomeClass.doSomethingThatTakesLong: IWaitForDone;
begin
Result := TClassThatDoesIt.Create;
end;

var
Waiter: IWaitForDone;
begin
Waiter := SomeClass.doSomethingThatTakesLong;
while not Waiter.isDone do
doSomethingElse;
Waiter := nil;
end;

在上下文中,调用 isDone 可能实际上完成了一部分要做的事情,并在完成时返回 true,在仍有部分要完成时返回 false。或者它可以只检查另一个线程是否完成了它的工作。我不希望调用者看到它。

我想我不是第一个遇到这类问题的人,这个解决方案可能已经有了名字(设计模式?),但我找不到它。那它叫什么呢?

最佳答案

Microsoft 为长时间运行的方法建议了两种模式(异步调用和根据模式会合)

关于delphi - "Long running method is done"有设计模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com