Witajcie, piszę program który będzie wysyłał jeden konkretny plik na google drive. Zrobiłem sobie ładne GUI gdzie jest pole tekstowe na email i przycisk połącz. Wszystko działa ale problem jest przy łączeniu bo całe GUI zwiesza się na czas łączenia. Żeby to obejść próbuję użyć backgroundworkera który wykona połączenie w tle i nie zawiesi programu. Niestety po wywołaniu mojej funkcji łączącej w evencie backgroundworker_doWork nic się nie dzieje i nie uzyskuję połączenia.
Proszę o pomoc jak to uruchomić bo już nie mam pomysłów.
//Funkcja obsługujaca połączenie z Google
private void polacz_z_Google()
{
if(b_Polacz_serw.Text == "Połącz")
{
if (string.IsNullOrWhiteSpace(tb_Login.Text))
{
MessageBox.Show("Pole Gmail nie może być puste", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (tb_Login.Find("@gmail.com") > 0)
{
try
{
string yourAppClientID = "NIE MOGĘ POKAZAĆ";
string yourAppClientSecret = "NIE MOGĘ POKAZAĆ";
string[] scopes = new string[] { DriveService.Scope.Drive, Oauth2Service.Scope.UserinfoEmail };
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = yourAppClientID,
ClientSecret = yourAppClientSecret,
},
scopes,
"user",
CancellationToken.None).Result;
}
catch
{
MessageBox.Show("Użytkownik nie zezwolił na połączenie", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
info_status_Google();
}
else
{
MessageBox.Show("Nieprawidłowy adres Gmail, wprowadź adres w formacie uż[email protected]", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
else if(b_Polacz_serw.Text == "Rozłącz")
{
b_Polacz_serw.Text = "Połącz";
lab_status_serw.Text = "Rozłączony";
pb_status_serw.BackColor = Color.Red;
pb_status_panel_serw.BackColor = Color.Red;
sprawdz_stan_polaczenia_google = false;
tb_Login.Enabled = true;
credential.RevokeTokenAsync(CancellationToken.None);
}
}
Przycisk:
//Obsługa przycisku połącz z serwerem
private void b_Polacz_serw_Click(object sender, EventArgs e)
{
Worker1.RunWorkerAsync();
}
Worker:
private void Worker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
polacz_z_Google();
}