Hallo, ich weiss, dass das hier schon mehrmals besprochen worden ist. Habe auch alles gelesen u gegoogelt, aber so wirklich brachte mich das der Lösung nicht näher.
private bool Neu_Import_VA()
{
//ChB_VA_aktiv.Checked = true;
//DatePickModFrom.Value = DateTime.Now.AddDays(-14);
//DatePickModTo.Value = DateTime.Now;
try
{
GetSellerTransactionsCall apicall = new GetSellerTransactionsCall(Context);
apicall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll);
apicall.DetailLevelList.Add(DetailLevelCodeType.ItemReturnDescription);
apicall.DetailLevelList.Add(DetailLevelCodeType.ItemReturnAttributes);
apicall.DetailLevelList.Add(DetailLevelCodeType.ItemReturnCategories);
apicall.Pagination = new PaginationType();
apicall.Pagination.EntriesPerPage = 200;
apicall.Pagination.PageNumber = 1;
int PageIndex;
AnzahlNeueDS = 0;
for (PageIndex = 1; PageIndex <= 2; PageIndex++)
{
apicall.Pagination.PageNumber = PageIndex;
TransactionTypeCollection transactions = apicall.GetSellerTransactions(DatePickModFrom.Value, DatePickModTo.Value);
Application.DoEvents();
foreach (TransactionType trans in transactions)
{
frm_Anmeldung.Connection.Close();
frm_Anmeldung.Command.CommandType = CommandType.Text;
frm_Anmeldung.Command.CommandText = SQLBefehle.cSelectStFrom + Felddefinitionen.Tabelle.eBay_VerkaufteArtikel.ctbleBay_VA + SQLBefehle.Where +
Felddefinitionen. Tabelle.eBay_VerkaufteArtikel.cvCh20_AuktionsNr + SQLBefehle.Gleich + "'" + trans.Item.ItemID + "'";
try
{
frm_Anmeldung.Command.Connection.Open();
int count = 0;
SqlDataReader dr = frm_Anmeldung.Command.ExecuteReader();
while (dr.Read())
{
count++;
}
dr.Close();
if (count == 0)
{
//Splittung Vorname u Nachname
if (trans.Buyer.BuyerInfo.ShippingAddress.Name == null)
{
trans.Buyer.BuyerInfo.ShippingAddress.Name = "";
}
try
{
if (trans.Buyer.BuyerInfo.ShippingAddress.Name != "")
{
if (trans.Buyer.BuyerInfo.ShippingAddress.Name.IndexOf(" ") > 0)
{
TmpVorname = trans.Buyer.BuyerInfo.ShippingAddress.Name.Substring(0, trans.Buyer.BuyerInfo.ShippingAddress.Name.IndexOf(" "));
if (Char.IsUpper(TmpVorname, 0) == false)
{
TmpVorname = TmpVorname.Substring(0, 1).ToUpper() + TmpVorname.Substring(1, TmpVorname.Length - 1);
}
TmpNachname = trans.Buyer.BuyerInfo.ShippingAddress.Name.Substring (trans.Buyer.BuyerInfo.ShippingAddress.Name.IndexOf(" ") + 1, trans.Buyer.BuyerInfo.ShippingAddress.Name.Length - TmpVorname.Length - 1);
if (Char.IsUpper(TmpNachname, 0) == false)
{
TmpNachname = TmpNachname.Substring(0, 1).ToUpper() + TmpNachname.Substring(1, TmpNachname.Length - 1);
}
}
}
}
catch (Exception Fehlermeldung)
{
RTB_Log.AppendText(DateTime.Now.ToString() + "(VA Import) Fehler: " + Fehlermeldung.Message + "\n");
RTB_Log.ScrollToCaret();
return false;
}
RTB_Log.AppendText(DateTime.Now.ToString() + "(VA Import) Fehler: " + "\n");
Datenbank.SQLDatenSpeichern (Datenbank.GetProcNameInsUpd (Felddefinitionen.Tabelle.eBay_VerkaufteArtikel.ctbleBay_VA),
new string[] {Datenbank.Gl_neuerDS,
trans.Item.ItemID,
"0",
trans.Item.Title,
trans.Item.SubTitle,
trans.Item.Description,
trans.QuantityPurchased.ToString(),
trans.Item.Currency.ToString(),
trans.TransactionPrice.Value.ToString(),
cl_Tools.DatumSortieren(Convert.ToString(trans.CreatedDate.ToLocalTime())),
cl_Tools.ebayZeitSortieren(Convert.ToString(trans.CreatedDate.ToLocalTime())),
trans.Buyer.UserID,
trans.Buyer.Email,
TmpVorname + " " + TmpNachname,
trans.Buyer.BuyerInfo.ShippingAddress.CompanyName,
trans.Buyer.BuyerInfo.ShippingAddress.Street1,
trans.Buyer.BuyerInfo.ShippingAddress.Street2,
trans.Buyer.BuyerInfo.ShippingAddress.PostalCode,
trans.Buyer.BuyerInfo.ShippingAddress.CityName,
trans.Buyer.BuyerInfo.ShippingAddress.CountryName,
trans.Buyer.BuyerInfo.ShippingAddress.StateOrProvince,
"",
trans.ShippingServiceSelected.ShippingServiceCost.Value.ToString(),
"",
"",
DateTime.Now.ToString()});
AnzahlNeueDS++;
}
}
catch (Exception Fehlermeldung)
{
RTB_Log.AppendText(DateTime.Now.ToString() + "(VA Import) Fehler: " + Fehlermeldung.Message + "\n");
RTB_Log.ScrollToCaret();
return false;
}
}
}
}
catch (Exception Fehlermeldung)
{
RTB_Log.AppendText(DateTime.Now.ToString() + "(VA Import) Fehler: " + Fehlermeldung.Message + "\n");
RTB_Log.ScrollToCaret();
return false;
}
finally
{
//ChB_VA_aktiv.Checked = false;
}
return true;
}
Aufruf:
ThreadStart asyncCall = delegate
{
RTB_Log.Invoke(new MethodInvoker(Neu_Import_VA()));
};
Thread t = new Thread(asyncCall);
t.Start();
Fehler= Falscher Rückgabetyp
Dann habe ich es mal über den Backgroundworker versucht, aber dort habe ich das Problem falls eine Exception kommt kann er nicht in die RichTextBox reinschreiben. Vllt weiß jemand etwas mehr?! Thx im voraus
Hallo ZeroQool,
erstmal zwei Klammern waren zu viel:
RTB_Log.Invoke(new MethodInvoker(Neu_Import_VA));
und dann muss entweder Neu_Import_VA void als Rückgabetype haben oder du musst statt MethodeInvoker einen Delegattyp verwenden, der bool als Rückgabewert hat. Jedenfalls muss natürlich die Signatur des Delegattypen und der Methdode übereinstimmen.
herbivore
THX herbivore...so, habe alles geändert, aber meine GUI friert nun beim Import ein u nachdem der Import fertig ist, wird die GUI wieder "freigegeben" Komisch....
Hallo ZeroQool,
naja, du startest einen Thread, der nichts anders macht, als dem GUI-Thread zu sagen, er soll die gesamte Aktion ausführen. Also läuft alles sofort und vollständig im GUI Thread. Du musst es schon so machen, wie in [FAQ] Warum blockiert mein GUI? beschrieben. Lies das am besten noch mal in Ruhe. Da steht genau wie man es macht.
herbivore