Fix cross-thread violations in launcher
This commit is contained in:
parent
9258e47e08
commit
df5e5ca232
@ -91,6 +91,13 @@ namespace TrueCraft.Launcher.Views
|
|||||||
UsernameText.Sensitive = PasswordText.Sensitive = LogInButton.Sensitive = RegisterButton.Sensitive = true;
|
UsernameText.Sensitive = PasswordText.Sensitive = LogInButton.Sensitive = RegisterButton.Sensitive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class LogInAsyncState
|
||||||
|
{
|
||||||
|
public HttpWebRequest Request { get; set; }
|
||||||
|
public string Username { get; set; }
|
||||||
|
public string Password { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
private void LogInButton_Clicked(object sender, EventArgs e)
|
private void LogInButton_Clicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(UsernameText.Text) || string.IsNullOrEmpty(PasswordText.Password))
|
if (string.IsNullOrEmpty(UsernameText.Text) || string.IsNullOrEmpty(PasswordText.Password))
|
||||||
@ -106,17 +113,23 @@ namespace TrueCraft.Launcher.Views
|
|||||||
var request = WebRequest.CreateHttp(TrueCraftUser.AuthServer + "/api/login");
|
var request = WebRequest.CreateHttp(TrueCraftUser.AuthServer + "/api/login");
|
||||||
request.Method = "POST";
|
request.Method = "POST";
|
||||||
request.ContentType = "application/x-www-form-urlencoded";
|
request.ContentType = "application/x-www-form-urlencoded";
|
||||||
request.BeginGetRequestStream(HandleLoginRequestReady, request);
|
request.BeginGetRequestStream(HandleLoginRequestReady, new LogInAsyncState
|
||||||
|
{
|
||||||
|
Request = request,
|
||||||
|
Username = Window.User.Username,
|
||||||
|
Password = PasswordText.Password
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleLoginRequestReady(IAsyncResult asyncResult)
|
private void HandleLoginRequestReady(IAsyncResult asyncResult)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var request = (HttpWebRequest)asyncResult.AsyncState;
|
var state = (LogInAsyncState)asyncResult.AsyncState;
|
||||||
|
var request = state.Request;
|
||||||
var requestStream = request.EndGetRequestStream(asyncResult);
|
var requestStream = request.EndGetRequestStream(asyncResult);
|
||||||
using (var writer = new StreamWriter(requestStream))
|
using (var writer = new StreamWriter(requestStream))
|
||||||
writer.Write(string.Format("user={0}&password={1}&version=12", UsernameText.Text, PasswordText.Password));
|
writer.Write(string.Format("user={0}&password={1}&version=12", state.Username, state.Password));
|
||||||
request.BeginGetResponse(HandleLoginResponse, request);
|
request.BeginGetResponse(HandleLoginResponse, request);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@ -143,10 +156,10 @@ namespace TrueCraft.Launcher.Views
|
|||||||
if (session.Contains(":"))
|
if (session.Contains(":"))
|
||||||
{
|
{
|
||||||
var parts = session.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
|
var parts = session.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
Window.User.Username = parts[2];
|
|
||||||
Window.User.SessionId = parts[3];
|
|
||||||
Application.Invoke(() =>
|
Application.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
Window.User.Username = parts[2];
|
||||||
|
Window.User.SessionId = parts[3];
|
||||||
EnableForm();
|
EnableForm();
|
||||||
Window.MainContainer.Remove(this);
|
Window.MainContainer.Remove(this);
|
||||||
Window.MainContainer.PackEnd(Window.MainMenuView = new MainMenuView(Window));
|
Window.MainContainer.PackEnd(Window.MainMenuView = new MainMenuView(Window));
|
||||||
|
Reference in New Issue
Block a user