オリジナル:http://www.cnblogs.com/Tjamie/archive/2013/01/09/2852949.html
10061189タンZhuanqi
でも10061160ザオ・パン
1、デザイン
これは、追加ボタンボタンで、ラベル「状態の床」、「現在の時刻が」マニュアル以外に追加された初期の設計であり、
以下の情報はすべてのコードを追加しています
これは、フロアの数やエレベーター変化の数に応じて変化します
例えば3基のエレベーター、床10は次のようになります。
表示ルールは、層を押し上げている左側の状態、/ダウンは、赤色表示され、Nは、層である層であるワードを右側を持ち上げます
詳細な実行ショットは以下の見
図2に示すように、ソース・スキーマ
コードでは二つの新しい世界の形で、オリジナルに基づいて動作します
図3に示すように、コードの行数
行数が2つのスケジューラを数えていない、元のプログラムの行数をカウントしません
アカウントに送信データをあらかじめ調整する必要性を考えると、スケジューラは、下に変更されません。
そして、いくつかのコードのために乗客のエレベーターが増加している、コードの行(いないコメントおよび空白行)約650行の合計数
4、実行時のスクリーンショット
5、デザインの経験
3つの質問と挑戦から私の経験では教えてください
挑戦
デザインUIインターフェース表示、必要に応じてオリジナルのエンジニアリングデータから動作するコードを見つけ、およびUIインターフェースディスプレイに渡さする必要性から、
これは、我々は、すべてのプロジェクトコードの基本的な原理を理解する必要が深く考慮に最初のペアプログラミングを取って、元のプロジェクトのコードを理解するために私たちを必要とし
データはまだ見つけることは比較的容易であり、
しかし、ポイントを強調するために、スケジューラからデータを読み取ることができません
そうしないと、スケジューラUIショーを変更することはできません
最初に私は、スケジューラからのいくつかのデータを読み出して、後で他のプロジェクトから読み込むための方法を発見しました
3つの質問
問題を解決しました
コンソール表示UIを実行することはできません元は、元のプログラムはすぐに実行されると、直接フォームは間違いなく「PDB」である場合にUIを表示し、何も見えません
ここではスリープは、プログラム全体のスリープが停止され、リフレッシュUIも停止され、無効です
問題解決のアプローチ
統一された表示UIのように(最後に、これは方法です)して、プログラムを実行しますが、またしばらく(真)ループを示し、それが立ち往生されるだろう
そのため、実行する新しいスレッドを開いて、部分的にはUIラベルの定義は、別のスレッドであるためにします
会报修改其它线程定义元素的一个错,解决方法之一是在线程开始前,加一句
Control.CheckForIllegalCrossThreadCalls = false;
但这不是最好的解决方法,这个是告诉程序你不用管这个,我保证肯定没事
一个没有解决的问题
由于上述设计中,必须每次把所有界面上的元素内容清空,再根据当前状态填写新的状态内容
所以肯定有闪烁感
正确的解决办法就是像我们做游戏时一样一帧一帧的做
或者不每次就全刷新,只刷部分改动的数据,这样闪烁感会小一些
但实现有些复杂,加上目前虽有闪烁感,但还可以接受,故不再更改
转载于:https://www.cnblogs.com/buaashine/archive/2013/01/09/2852954.html