0
如果讓我們說我有一個帶有ListView和Update()函數的FormA。然後,我也有一個數學類與函數A()有一些魔術......委託可以用來從A()調用Update()嗎?或者,還有更好的方法?我意識到從另一個類更新一個GUI形式是有風險的。從另一個類調用ListView更新函數...可能嗎?
如果讓我們說我有一個帶有ListView和Update()函數的FormA。然後,我也有一個數學類與函數A()有一些魔術......委託可以用來從A()調用Update()嗎?或者,還有更好的方法?我意識到從另一個類更新一個GUI形式是有風險的。從另一個類調用ListView更新函數...可能嗎?
是的。只要Math類不知道它的實際調用,它就沒有那麼大的風險。你只要給它一個粗略的想法通過它從你的表指向所需的功能:
public class MathClass {
public Action FunctionToCall { get; set; }
public void DoSomeMathOperation() {
// do something here.. then call the function:
FunctionToCall();
}
}
在你的表格你可以這樣做:
// Form.cs
public void Update() {
// this is your update function
}
public void DoMathStuff() {
MathClass m = new MathClass() { FunctionToCall = Update };
m.DoSomeMathOperation(); // MathClass will end up calling the Update method above.
}
你MathClass調用Update,但它沒有知識告訴它調用Update的對象或更新的位置,使它比將對象緊密耦合在一起更安全。
真的不錯的代碼! :)我會測試這一點,也從另一個線程(因爲它的想法).. –