pub0.zzcのようなファイルにメッセージを保存するチャットプログラムを作成すると、それを使用しているすべてのコンピュータがこれらのファイルが格納されているハードドライブに接続されます。メソッドdata.Chat.Read(MessageTypes type、string Channel)は、メッセージを返すまでtry catchステートメントを通して無限ループします。私は以前これを使っていて、完璧に動作します。しかし、私のコードは管理するのが難しかったので、テキストボックスをウィンドウに配置して毎回コードを使用するのではなく、ユーザーコントロール(MessageViewer)を作成しました。それは、私がそれを実行するときにもう一度、うまく動作しますが、私はいつでも私がコントロールを格納するウィンドウでデザイナーを使用しようとすると、フリーズVS。私はコントロールを削除するときに問題がないので、問題はありません。私は(可能性のあるエラーがRefreshMessagesでいると思う)とRefresher_Tick(...)Windowsフォームアプリケーションのデバッグ
Refresher.Stop()と.Startは()もないので、ここでは
前にうまく働いたことのコードです:
private void Refresher_Tick(object sender, EventArgs e)
{
Refresher.Stop();
int RefreshRate = 4;
bool Live = true;
if (RefreshRateChoice == "Manual")
{
Live = false;
RefreshRate = 1;
}
else if (RefreshRateChoice == "4 (Default)")
{
Live = true;
RefreshRate = 4;
}
else
{
Live = true;
RefreshRate = Convert.ToInt32(RefreshRateChoice);
}
if (data.Chat.Read(MessageType, ChannelChoice) != ContentPresenter.Text && Live)
{
RefreshMessages();
}
Refresher.Interval = RefreshRate;
Refresher.Start();
}
public void RefreshMessages() {
if (data.Chat.Read(MessageType, ChannelChoice) != ContentPresenter.Text)
{
ContentPresenter.Text = data.Chat.Read(MessageType, ChannelChoice);
}
}
は、あなたがそれを必要とする場合:
public static string Read(MessageTypes Type, string Channel)
{
string Loc;
if (Type == MessageTypes.Public && (Channel == "1" || Channel == "2"))
{
return "Can not view this channel, only post to it.";
}
if (Type == MessageTypes.Public)
{
Loc = data.AssetsFolder + "\\pub" + Channel + ".zzc";
}
else if (Type == MessageTypes.Private)
{
Loc = data.AssetsFolder + "\\" + Channel + ".zzpc";
}
else if (Type == MessageTypes.Game)
{
Loc = data.AssetsFolder;
}
else
{
Loc = data.AssetsFolder;
}
while (true)
{
try
{
String MessageList = "";
StreamReader MessageReader = new StreamReader(Loc);
string EncMessages = MessageReader.ReadToEnd();
MessageReader.Dispose();
List<string> EncMsgList = EncMessages.Split(';').ToList();
for (int i = 1; i < EncMsgList.Count; i++)
{
MessageList += data.Encodings.Decrypt(EncMsgList[i], Palettes.Message) + "\n";
}
return MessageList;
}
catch
{
// Do nothing
}
}
}
ファイルをすでに使用している人の例外をチェックするために、私は他の例外もどうにか起こらないようにしなければなりません。私が使用し終わったのは、ifステートメントがDesignModeがtrueまたはfalseであるかどうかをチェックし、別の質問の誰かのように、タイマとRefreshMessagesを実行していないかどうかを確認することです。 – Oztaco