2011-06-22 9 views
0

は、それがメインプログラムにすることができますので、変数にそれを保存しない方法をコンソールに表示するためにコンソールに書き込むのではなく変数に格納しますか?

static void Main(string[] args) 
{ 
    // do something... 

    service.Feedback += new FeedbackService.OnFeedback(service_Feedback); 
} 

static void service_Feedback(object sender, Feedback feedback) 
{ 
    Console.WriteLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken)); 
} 

GitHub代わりの出力を参照してください?

答えて

2

さて、あなたは変数を宣言する必要があるだろう受信した最後のフィードバックを格納する。

複数のスレッドが含まれている場合、特にコレクションを使用している場合は特に注意する必要があります。それはあなたがラムダ式であるか、快適に依存

service.Feedback += (sender, feedback) => lastFeedback = feedback; 

:(。List<T>はスレッドセーフではありません)

もちろん

あなたはは、イベントハンドラのメソッドを使用するを持っていません。

service.Feedback += service_Feedback; 
+1

@ 001を明確にするためにそれを更新してください:私はGitHub APIがフィードバックで何をするのか分かりません。イベントハンドラを複数回呼び出すと、提案したようにコレクションにフィードバックを格納するだけで済みます。私はあなた自身でそれを調査し、それに起因する質問をすることをお勧めします。 –

1

ラムダの使用:これは、ちょうど最後のフィードバックを保存します

static void service_Feedback(object sender, Feedback f) 
{ 
    feedback = string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken); 
} 

class Program 
{ 
    static string feedback; // string to store formatted string, use type Feedback to store the variable itself 

    static void Main(string[] args) 
    { 
     service.Feedback += (s,f) => feedback = String.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken); 
    } 
} 

や古典を。

static void service_Feedback(object sender, Feedback feedback) 
{ 
    lastFeedback = feedback; 
} 

あなただけの代わりにこのList<Feedback>を行うことを検討する必要があります:

static Feedback lastFeedback; 

、その後、単に方法でそれを割り当てる:

+0

S:あなたがそのようにインラインでそれを行うにはしたくない場合でも、メソッドグループの変換を使用して、わずかに単純に既存のハンドラのサブスクリプションを作ることができますか? f?私がしたいのは、変数にタイムスタンプを割り当て、別の変数にdevicetokenを割り当て、次に次のフィードバックに行くことです。 – 001

+0

@ 001:あなたは、タイムスタンプとデバイストークンの2つの異なる変数が必要だとは言いませんでした。また、「次のフィードバックに行く」という意味が明確ではありません。 –

+0

最初と2番目のフィードバックを得ることは可能ですか? – 001

0
static void Main(string[] args) 
{ 
    // do something... 

    service.Feedback += new FeedbackService.OnFeedback(service_Feedback); 
} 

static StringBuilder sb = new StringBuilder(); 
static void service_Feedback(object sender, Feedback feedback) 
{ 
    sb.AppendLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken)); 
} 
関連する問題