解説
質問への回答にはなっていないと思いますが、質問者の気になっているワードについていくつか述べさせていただきます。
定義済みデリゲート
以下の2つはデリゲートの宣言を省略することに利用できます。
戻り値の無いデリゲート宣言を省略。以下のそれぞれのhandler
は同等に振る舞います。
C#
1delegate void SampleHander(int a, string b);
2SampleHander handler;
C#
1Action<int, string> handler;
戻り値を持つデリゲート宣言を省略。以下のそれぞれのhandler
は同等に振る舞います。
C#
1delegate bool SampleHander(int a, string b);
2SampleHander handler;
C#
1Action<bool, int, string> handler;
スレッド・タスク
これらは非同期処理(並列実行など)に関するものです。
スレッドは処理を実行しているモノのようなイメージで、例えば2つあるとコードの2箇所がそれぞれ処理されていくような状態になります。(通常のプログラムでは実行するとメインスレッドと呼ばれるスレッドが1つ用意されるためコードの1箇所が順次実行されているということです。)
タスクは非同期処理を扱いやするためのもので、名前の通り仕事の単位を指します。ひとつづきの決まった順序で行う処理を登録しておき、同時に実行可能なものはそれぞれやってもらうといったことに利用されます。タスクの処理登録にデリゲートが利用できたりするので、質問者の目にとまることがあったのかと思います。
非同期処理に関しては同期なしに同じメモリを変更してしまった場合に生じる問題や、デットロック(複数の処理がお互いの完了を待つ)など初心者では難しい面も多いので、そんなものがあるのかというぐらいに留めてまずは基礎を固めることをオススメします。
追跡について
最後になりましたが、追跡についてゲームを例えに使いながら説明します。
シューティングゲームなどで敵が複数現れるとします、プレイヤーが攻撃した場合発射された弾丸が敵に命中しているか調べるために敵の情報が必要になりますね。
ゲームでは敵以外にも多数のオブジェクトが存在するので(フィールドそのものや、アイテム、エフェクトなど)、それらの中から毎回敵を検索してしまうのは非効率になってしまいます。
そこでエネミーマネージャなど敵を管理する役目を持ったオブジェクトを用意します。(質問者の引用にある「登録済みのインスタンスを追跡するインターフェイス」に該当します)
エネミーマネージャに出現した敵のオブジェクトへの参照などを記録しておくことで、敵の情報が知りたい場合エネミーマネージャを介することで容易に調べる事ができるようになるということです。
また記録方法を対象に合わせて最適化することでより効率的に対象を見つけるなどの応用が効きます。(ハッシュテーブルや八分木など)
この説明にある「記録すること」が追跡に該当するかと思います。(すぐに見つけられるように場所を追いかけておくという感じです)
最後に
私もプログラミングなどの経験が多いわけではないので間違っている箇所も多々あると思いますが、学習の参考になれば幸いです。