2016-04-19 16 views
0

私は4つの工場のインスタンスを持つメインウィンドウを持っています。工場には、完了時を知る時間が残っています。工場には残り時間がかかる方法があります。私はメインクラスのすべての4つのインスタンスのメソッドを呼び出すので、私は各工場に残っている秒を含む4つの倍を取得します。残りの時間順にタイマーを表示

ここで、工場が完成する順序を表示したいと思います。 ように:

第一 - 第二

ファクトリー3 - 第三

工場1 - 4

ファクトリー2 - ファクトリー4

は、私は、各位置のための4つのラベルを持っています。どの工場を最初に完成させるか、2番目などを計算するにはどうすればいいですか?そして、それらを正しいラベルに置きますか?

私は複雑なif文を書くことが考えられます。

私はリストを作成して値で注文しようとしましたが、その方法で特定の値に属するファクトリがわかりません。

ファクトリクラス:

public double getRemaining() 
    { 
     seconds = TimeSpan.Parse(lblRemaining1.Content.ToString()).TotalSeconds; 

     return seconds; 
    } 

メインクラス:

 public void calculateOrder() 
    { 
     remaining1 = Factory1.getRemaining(); 
     remaining2 = Factory2.getRemaining(); 
     remaining3 = Factory3.getRemaining(); 
     remaining4 = Factory4.getRemaining(); 


    } 
+0

それらのすべて4は同じTotalSecondsを返したときにあなたの 'ファクトリー:: getRemainingは()'にも意味がありません。 'lblRemaining1'の – Xiaoy312

+0

これらはすべて同じ時間に起動され、同じラベルを持つインスタンスであるため、ランタイムの量が異なります。それは理にかなっていますか? – Yoshi

答えて

1
var factories = new Factory[] { Factory1, Factory2, Factory3, Factory4 } 
    .OrderBy(x => x.getRemaining()) // or, you can use OrderByDescending 
    .ToArray(); 

remaining1 = factories[0].getRemaining(); 
remaining2 = factories[1].getRemaining(); 
remaining3 = factories[2].getRemaining(); 
remaining4 = factories[3].getRemaining(); 
+0

うん、そうだよ。ありがとう兄貴。 – Yoshi

関連する問題