2016-09-23 5 views
-1

私はこれを投稿しているので、コードを誰でも利用できるようにしています。一度に1文字ずつTextBlockにテキストを追加

Noctisの提案に基づいてわずかに減少したコード。

StringBuilder DescriptionText = new StringBuilder(); 

async void RunDescription(StringBuilder description) 
{ 
    DescriptionText = description; 

    await Task.Delay(1000); // Short delay before the text starts printing so the window has time to load 

    new Thread(AddTextToTextBlock).Start(); 
} 

void TextBlockDispatcher(string text) 
{ 
    TextBlock1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => TextBlock1.Inlines.Add(text))); 
} 

void AddTextToTextBlock() 
{ 
    foreach (char c in DescriptionText.ToString()) 
    { 
     Thread.Sleep(30); 
     TextBlockDispatcher(c.ToString()); 
    } 
} 
+1

誰かが見直して提案したい作業コードは、codereview.stackexchange.comに属します。そこにさえ、あなたが解説したいと思う側面をはっきりと示している良い[mcve]を提供する必要があります。スタックオーバーフローは、特定の、実用的な_problems_コードです。 –

+1

codereview.stackexchange.comに属しているので、この質問を議論の対象外とすることにしました。 – Jeff

+0

@PeterDunihoありがとうございます。 – Cusha

答えて

2

ジャンプする必要がある通常のフープのようなサウンドです。私が変更を検討する唯一の事は、ディスパッチャーを呼び出して、アクセス権があるかどうかをチェックするのではなく、オブジェクト上で直接呼び出すことです。 それはちょっとのようになります。

TextBlock1.Dispatcher.BeginInvoke((Action)(() => /* logic here */) 

本当にあなたに電話を保存しますが、同じ同じ。 これは私の頭の上から来たのでマッサージする必要がありますが、正しい方向に向けるべきです。

+0

私の最後のコメントを見たなら、心配しないでください。何か愚かな見落とし。あなたの提案は素晴らしかったですが、私はまだ少なくとももう1つの方法が必要かもしれないと思います。これは問題ありません。 – Cusha

関連する問題