試圖AsyncCalls融入我的德爾福7個項目中的一個,我還沒有能夠調用類的參數的過程。如何使用AsyncCalls調用無參數類過程?
我想要做什麼:
TMyForm = class(TForm)
private
procedure TestCalculation;
procedure RunTest;
end;
var
TestCall: IAsyncCall;
procedure TMyForm.RunTest;
begin
TestCall := AsyncCall(TestCalculation);
end;
這是不可能的,導致所需錯誤E2036變量(當你試圖把一個表達式或常量的地址,則會出現此錯誤消息。) 。
這是可能的,只要我的程序有像這樣的example程序WaitForIt
參數。
此外,它是可能的LocalAsyncCall
但我並不總是想申報當地的程序。
而且如果我將其設爲靜態(即procedure TestCalculation
而不是procedure TMyForm.TesCalculation
),也可以調用此過程。然後我可以成功呼叫RunTestCall := AsyncCall(@TestCalculation, []);
但是這對於屬於TMyForm
的程序不起作用。
問題
如何與AsyncCalls打電話在我的例子(TestCalculation
)的參類程序從另一個過程我的類中?
asynccalls是否支持匿名方法,如OTL?所以你可以把這個呼叫轉換成臨時程序?像'AsyncCall(procedure(param:integer)begin TMyClass.MyMethod(); end)'?或者也許你可以使用OmniThreadsLibrary?對於我記得你可以只是'Parallel.Async(ProcedureName())',但你可以檢查它。至少OTL不會停止:-) –
不幸的是OTL不支持Delphi 7. –
運氣不好。 OTL v.1.x?儘管1.x不支持:-)但是,真的,你最好標記你的Delphi版本,這是TAGS的目的之後 –