私はいくつかのWPFエディタを書いています。 しかし、テキストストアはStream
です。Streamへの書き込みに非同期コードを使用する方法はありますか?
だから、ここでのXAMLコード:ユーザーは、こののredactorでいくつかのテキストを読み書きすることができますので、
<TextBox Text="{Binding ObjectViewModel.Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
私は、PropertyChanged
にUpdateSourceTrigger
を設定します。
ここで(ストリーム)としてテキストを読み書きコード:
public String Text
{
get
{
var sr = new StreamReader(StreamObject.text, Encoding.UTF8, true);
return sr.ReadToEnd();
}
set
{
lock (_lockObject)
{
var str = value;
var textStream = new MemoryStream();
using (var writer = new BinaryWriter(textStream, Encoding.UTF8, true))
{
writer.Write(Encoding.UTF8.GetBytes(str));
}
textStream.Position = 0;
StreamObject.text = null;
StreamObject.text = textStream;
textStream.Close();
}
}
}
ので、ユーザタイプの新しい言葉のコード書き込みは、新しいデータをストリーム(クリア古いストリームと新しいを作成)するとき。
しかし、それは遅い性能を得る。 async
(何とか)やその他の方法を使ってパーフォマスを改善する必要がありますか?
私は知っている、それはLostFocus
プロパティを使用することができますが、その方法でユーザーはTextBox
のフォーカスを失う必要があります。
最初にストリームにテキストを保存する理由は何ですか? – Clemens
@クレメンス、それはDBに格納されています。 By design –
その後、すべてのキーストロークではなく、DBに格納される直前に変換してください。 – Clemens