我的源代碼中存在一個問題,它使異步方法不是模態。 我使用Mahapps新城框架和我有一個記錄器級有兩個異步方法吧:C#異步方法未運行模式
public class Logger : ILogger {
public void outputMessage(string message) {
Console.WriteLine(message);
}
public void outputUserMessage(string message) {
MessageBox.Show(message);
}
public async void outputMetroUserMessage(object window, String title, String message) {
MetroWindow mWindow = (MetroWindow)window;
await mWindow.ShowMessageAsync(title, message);
}
public async void outputMetroUserMessageWithHidingMDI(object window, string title, string message) {
UIGlobals.MainPageMdiChild.Visibility = Visibility.Hidden;
MetroWindow mWindow = (MetroWindow)window;
await mWindow.ShowMessageAsync(title, message);
UIGlobals.MainPageMdiChild.Visibility = Visibility.Visible;
}
}
還有一些其他類與調用記錄器方法的方法。例如:
public partial class Login : MetroWindow {
public Login() {
InitializeComponent();
}
private void button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
DoLogin();
}
private void DoLogin() {
String email = txtEMail.Text;
String password = txtPassword.Password;
if (String.IsNullOrWhiteSpace(email)) {
Globals.Logger.outputMetroUserMessage(this, UserErrorMessageController.GetTitleByID(103), UserErrorMessageController.GetMessageByID(103));
} else if (String.IsNullOrWhiteSpace(password)) {
Globals.Logger.outputMetroUserMessage(this, UserErrorMessageController.GetTitleByID(104), UserErrorMessageController.GetMessageByID(104));
} else {
.
.
.
}
}
}
ProfileCreator:
public partial class ProfileCreator : MetroWindow {
public ProfileCreator(Network tempNetwork, UserProfile tempProfile) {
InitializeComponent();
.
.
.
}
private void btnSave_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
// TODO: Set cancelling when someting is missing
Save();
}
private void Save() {
getUserProfileValuesFromWindow();
Globals.TheSerializer.Serialize(tempProfile, Globals.PathToTemporaryFiles + "MyProfile.xml");
tempNetwork.NetworkParticipants.Add(tempProfile.ParticipantID);
Globals.TheSerializer.Serialize(tempNetwork, Globals.PathToTemporaryFiles + "MyNetwork.xml");
Globals.Logger.outputMetroUserMessage(this, "Erfolg", "Ihr Testsystem wurde erfolgreich angelegt.\nDrücken Sie erneut auf \"Testen\" und loggen Sie sich ein.");
Globals.Logger.outputMetroUserMessage(this, UserErrorMessageController.GetTitleByID(104), UserErrorMessageController.GetMessageByID(104));
}
當我打電話登錄級中的記錄器的方法,這些方法運行模式符合市場預期,但如果我把他們從ProfileCreator,他們似乎並不成爲模態。我試圖找出它,但我看不出類和參數的任何區別。也許你會看到我沒有的東西。
感謝您的幫助!
當您通過\nDrücken時,您很可能會看到您未看到的錯誤。嘗試使用@「Ihr Testsystem wurde erfolgreich轉義整個字符串... –