- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Amazon Kindle
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Milyen alaplapot vegyek?
- Bambu Lab 3D nyomtatók
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- HiFi műszaki szemmel - sztereó hangrendszerek
- Házimozi belépő szinten
- SSD kibeszélő
- TCL LCD és LED TV-k
Új hozzászólás Aktív témák
-
Szabesz
őstag
válasz
DrojDtroll #8513 üzenetére
Ez esetben adja magát a Singleton.
-
Szabesz
őstag
"Ahogy vártam, ugyan az a hiba, így is:
await Task.Run(() => { new InstLogic().LetsDoThis(gemail.Text, gepassword.Password, destination); }); és itt elszáll."
Persze, hogy elszáll, hiszen egy UI száltól különböző szálon próbálsz meg hozzáférni egy UI elem csak UI szálról elérhető
property
-jéhez:gemail.Text
<- ez itt tippre egy aMainWindow
-on lévőTextBox
gepassword.Password
<- ez meg egyPasswordBox
Tényleg, átolvasni, és értelmezni, mert enélkül marha nehéz: Threading model.
#8325 és a fenti alapján mostmár remélem kezd összeállni a kép, mi mikor miért nem megy.
-
Szabesz
őstag
"Azt írja ki, amit bemásoltam. Semmi többet."
Igen, pontosan ott írja, csak értelmezni kell: "The calling thread cannot access this object because a different thread owns it.". Elolvastad amit linkeltem a threading-ről?
"A linkelt megoldásban például az nem, hogy a this.-nek nincs Dispatcher-e."
Melyikthis
-nek? Nyilván mindegyiknek nem lesz, de a szóban forgóthis
-nek van. A te esetedben aclass MainWindow : Window
példánynak lesz ilyenproperty
-je.
Bárhol máshol kézenfekvően tudod használni aApplication.Current.Dispatcher
példányt.Magától csak úgy nem fog kétszer meghívódni, de ezt a kódod teljes ismerete nélkül senki sem fogja megmondani pontosan miért történik.
Egy kicsit jobban el kellene mélyedned a fentebb linkelt témákban, mert azok alap ismerete nélkül rengeteg probléma fog még megtalálni.
A fenti példáknál feltételeztem, hogy WPF alkalmazásról van szó (többinél sem tér el jelentősen).
-
Szabesz
őstag
Egyfelől írja a kivételben, hogy mi is pontosan a baja, másfelől meg rákeresve google első találatban megoldás is van.
Ajánlott átolvasni: Threading Model, azon belül ami most téged érint: Dispatcher, abból is pl Invoke(Action)
Ha meg már
Task.Run
, akkor sokkal inkábbawait Task.Run
, a gomb eseménykezelő függvény megasync void
. -
Szabesz
őstag
válasz
Chesterfield #8133 üzenetére
Alapvetően ajánlás szokott lenni, hogy ezek maradjanak xaml szinten.
Ezt ugye meg is csináltad ezzel:ItemsSource="{Binding}"
Ennél ugye megtörtént az adatkötés (a példádban látható részek alapján rosszul, ezért linkeltem be pár leírást az adatkötésről), nem kellene már utána hozzányúlnod kódból többet.
Szintén alapvető MS ajánlás szokott lenni a WPF-hez (is) az MVVM, ami elég jól a helyére tudja rakni a dolgokat (fejben és kódban is), ezt is érdemes lehet átolvasni és alkalmazni. -
Szabesz
őstag
válasz
Chesterfield #8131 üzenetére
Elég sok a zavar azokban amit bemásoltál, sok irányból lehetne nekikezdeni mi miért rossz.
Érdemes lenne átolvasnod pár dolgot, és újragondolni mit is szeretnél csinálni pontosan.
Data Binding (WPF)
Windows Presentation Foundation Data Binding: Part 1
Windows Presentation Foundation Data Binding: Part 2
WPF - Data Binding
FrameworkElement.DataContext -
Szabesz
őstag
válasz
Froclee #7818 üzenetére
Ez nem igazán számít a jelenlegi esetben, elvégre a
HttpClient
és aWebClient
is csak egy wrapper aWebRequest
köré. Nem von le semmit a felhasználhatóságából, nem lesz deprecated a .net Core miatt.
Nem fogja fejleszteni, ez tetszik :-) Mire gondolsz, mit fejlesszen rajta? Attól még, hogy van más alternatíva, használható. Ezzel az erővel rögtön lehetne ajánlani, hogy mindent PCL-ben írjon, meg UWP, mert az mennyire új, még fejlesztve van. Irreleváns egy ilyen igénynél mint ez. Utána persze bele lehet csapni a lecsóba, de előtte az alapok működjenek, nem rögtön taktikai atombombával tómedret ásni. -
Szabesz
őstag
válasz
Froclee #7816 üzenetére
"Szerintem ne bátorítsuk itt az embereket depracated api-k használatára.
(WebClient)"
Ezzel nem értek egyet, hogy deprecated lenne bármilyen formában is (erre valami hivatalos forrás pl?). Lehet más példákat hozni, bonyolultabban és és sokkal elbarmoltabban (
Task<>.Result
), de egy példa szemléltetésre azért bőven nincs értelme ilyen mélységekben belemenni. -
Szabesz
őstag
Azért írtam Parallel-lel, mert láthatóan valamit háttérben akartál csinálni, amit nem vártál be (
Task.Factory
await
vagy bármi egyéb nélkül (aminek következtében az utolsó néhány unzip eredménye hibás lesz, vagy egy szép 0 byte-os file)). De akkor legyen egyszálas,ServicePointManager.DefaultConnectionLimit
állítás nélkül:using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//ServicePointManager.DefaultConnectionLimit = int.MaxValue;
var files = new[]
{
new Uri("http://ipv4.download.thinkbroadband.com/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/20MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/20MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/200MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/200MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/200MB.zip")
};
Console.WriteLine("Start");
foreach(var file in files)
{
var tempFile = Path.GetTempFileName();
using (var wc = new WebClient())
{
Console.WriteLine($"Starting download: {file} to {tempFile}...");
wc.DownloadFile(file, tempFile);
Console.WriteLine($"End download: {file}, local path: {tempFile}");
}
//File.Delete(tempFile);
}
Console.WriteLine("End");
}
}
}Ez nálam szintén folyamatosan tölt, nem malmoz két letöltés között.
A probléma eredete valószínűleg az, hogy kapcsolatokat nyitsz, amiket nem, vagy nem megfelelően zársz le, így a connection limit betelik, és megvárja egynek a felszabadulását (esetünkben valószínűleg timeout-ját). De mivel még nem láttunk teljes (minta) forduló kódot elejétől a végéig, csak részleteket, így nehéz megmondani a pontos okokat. Csinálj egy egyszerű példát, amin előáll a probléma, és arra már egyszerűbb gyógyírt mondani.
-
Szabesz
őstag
Csináltam egy ConsoleApp példát:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ServicePointManager.DefaultConnectionLimit = int.MaxValue;
var files = new[]
{
new Uri("http://ipv4.download.thinkbroadband.com/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/10MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/20MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/20MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/50MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/100MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com/200MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:81/200MB.zip"),
new Uri("http://ipv4.download.thinkbroadband.com:8080/200MB.zip")
};
Console.WriteLine("Start");
Parallel.ForEach(files, file =>
{
var tempFile = Path.GetTempFileName();
using (var wc = new WebClient())
{
Console.WriteLine($"Starting download: {file} to {tempFile}...");
wc.DownloadFile(file, tempFile);
Console.WriteLine($"End download: {file}, local path: {tempFile}");
}
//File.Delete(tempFile);
});
Console.WriteLine("End");
}
}
}Ez szépen kipörgeti amit a netem bírt, és párhuzamosan tölti le a minta fájlokat.
Több gond van a bemásolt kódoddal (mindamellett, hogy a teljesen nem másoltad be, ezért az összkép sem lehet teljes a működésről, és vannak benne zavaros dolgok):
- using-ot kellene használni
- Task.Factory.StartNew pedig el van indítva, de sehol sincsen bevárva. Task.Run javallottabb, illetve az async-await kulcsszavak használata. De ha még nagyon új a C#, lehet hanyagolni kellene egyelőre.
- AConvertToStream
környékén is valószínűleg voltak problémák, nem olyan triviális az átalakítás.
-ServicePointManager.DefaultConnectionLimit
értéke alapból 2, ha párhuzamos kérésekkel szeretnél dolgozni, érdemes átállítani.Másolj be egy teljes (működő, forduló) példát, hogy meg lehessen találni a pontos hibát. De valószínűnek tartom, hogy a fentiek egyikének hibás használata az okozó.
-
Szabesz
őstag
Meglehet, de nem is biztos hogy kell neki a WP7
Ellenben kis utánaolvasással meg lehet találni a VS 2012 Express for Windows Phone-t is.
Devcenter -> SDK 8.0 -> Details: "The Windows Phone SDK 8.0 is a full-featured development environment to use for building apps and games for Windows Phone 8.0 and Windows Phone 7.5. The Windows Phone SDK provides a stand-alone Visual Studio Express 2012 edition for Windows Phone[...]"Enjoy!
Btw ez a szemforgatós emoticon nagyon idegesítő, főleg ebben a szituációban.
-
Szabesz
őstag
válasz
Pttypang #5614 üzenetére
2013 for Windows-ban alapból benne van a WP8 SDK, WP7-et külön telepítheted.
-
Szabesz
őstag
reszek hol van létrehozva?
Valami iylesmi sokkal szebb lenne btw:
string line = File.ReadLines("allas.txt").Skip(1).Take(1).First();
var reszek = new List<int>();
int value;
foreach (var element in line.Split('#'))
{
if(int.TryParse(element, out value))
reszek.Add(value);
else
throw new Exception("para van");
} -
Szabesz
őstag
Nem int[] konstruktorú.
class Kez
{
private int[] kez;public Kez(int[] kez)
{
this.kez = kez;
}public Kez()
{
kez = new int[4];
}public int[] getKez()
{
return kez;}
}Így már az.
Itt meg:
public static void Osztas(Pakli pakli, ref Kez kez, int ellenfelszam)
{
kez = new Kez(pakli.Oszto(Pakli.OsztandoLapokSzama(kez.getKez())));
//a hiba: Cannot implicitly convert type 'int[]' to 'Beadando_Fezler_Gabor.Kez'
}A ref-re felhívnám a figyelmed, különben nem sok értelme van ennek a függvényednek.
Implicit / explicit cast-tal lehetne még varázsolni, de egyfelől nem hiszem hogy ezt szeretnéd, másrészt meg az ilyenek elég csúnyák:
class A
{
public static implicit operator int[](A a)
{
return new int[5];
}
}
//wtf
int[] alma = new A(); -
-
Szabesz
őstag
válasz
trisztan94 #4598 üzenetére
A linken le van írva a megoldás, a telepítő csak így megy tovább (vagy visszaállítod a dátumot október 6 előttre)
1) SDK letöröl
2) msi telepít
3) SDK install -
Szabesz
őstag
válasz
trisztan94 #4596 üzenetére
Https-en akar letölteni egy csomagot, de annak lejárt a tanúsítványa nemrég, ezért elhasal.
Megoldás itt.
Ha iso-ból telepíted, akkor a felsoroltakat le sem kell töltened, ott vannak a "packages\Windows_SDK"-ban -
Szabesz
őstag
válasz
K_Gabor #4521 üzenetére
Még mindig nem értem. Mi az ami problémát okoz, nem tudod megoldani?
A leírásodból ezt tudom leszűrni, de ez így túl triviálisnak tűnik.
class Program
{
class A
{
private string data;
public A(string data)
{
this.data = data;
}
public void foo()
{
Console.WriteLine("foo. data={0}", data);
}
}
class B
{
private int number;
public B(int number)
{
this.number = number;
}
public void bar()
{
Console.WriteLine("bar. number={0}", number);
}
}
class C
{
public List<A> AList { get; private set; }
public List<B> BList { get; private set; }
public C()
{
AList = new List<A>();
BList = new List<B>();
}
}
static void Main(string[] args)
{
var c1 = new C();
c1.AList.Add(new A("c1"));
c1.BList.Add(new B(1));
//...
var c6 = new C();
c6.AList.Add(new A("c6"));
c6.BList.Add(new B(6));
//C6 'A'-'B' listái
var c6a = c6.AList;
var c6b = c6.BList;
//C6 'A' listáján végigmegyünk
foreach (var a in c6a)
a.foo();
//C6 'B' listáján végigmegyünk
foreach (var b in c6b)
b.bar();
Console.ReadLine();
}
} -
Szabesz
őstag
válasz
supi007 #4394 üzenetére
Igen, felrak mindent ami kell.
"Jól gondolom továbbá, hogy a .NET azt teszi lehetővé, hogy minnél részletesebben férjek hozzá az operációs rendszerhez és azért írta meg az MS nekem ezt, hogy ha már lehet, akkor szabványosan nyúljak hozzá?"
Igen, akár így is lehet fogalmazni, de valahogy jobban passzol ide az "életed megkönnyítése" kifejezés -
Szabesz
őstag
válasz
Neil Watts #3589 üzenetére
De a kód nem éppen ezt tükrözi. Gondold át még egyszer az egészet, aztán írd meg az elejétől.
for (int i = 0; i < meret; i++)
{
listBoxKi.Items.Add(homerseklet[i]);
for (int j = 0; j < meret; j++)
{
ujhomerseklet[0] = honapok[0];
ujhomerseklet[j + 1] = Convert.ToString(homerseklet[i]);
for (int k = 0; k < ujhomerseklet.Length; k++)
{
fki.WriteLine(ujhomerseklet[k]);
}
}
}Ami most történik:
-kezdődik a legkülső ciklus, i=0, listBoxKi-be belekerül homerseklet[0], majd megindul a belső ciklus j=0, ahol ujhomerseklet[1]-től ujhomerseklet[meret]-ig beállítódik homerseklet[ i ]-vel. Ugyanakkor összesen 1240-szer írsz fki-be többnyire null-okat.
-Majd i=1 és így tovább...
....
-Végül nem zárod be fki-t, ezért nem is nagyon fogod látni a tartalmát.Ez ugye elég értelmetlen.
-
Szabesz
őstag
válasz
Neil Watts #3587 üzenetére
Nem jött át mit is szeretnél csinálni.
A kódban viszont vannak érdekes dolgok, Form1_Load-ban beállítod a selectedindexet, majd ráifelsz, hogy mi az értéke.
Meg ott van a hármas for ciklus, ahol
ujhomerseklet[0] = honapok[0];
meret*meret-szer állítódik be fölöslegesen, afor (int k = 0; k < ujhomerseklet.Length; k++)
{
fki.WriteLine(ujhomerseklet[k]);
}
rész is igen egzotikus dolgokat művelhet (meret*meret-szer lefut ez is), főleg, hogy fki nem lett bezárva (tipp: használj using blokkot) -
Szabesz
őstag
válasz
Neil Watts #3584 üzenetére
Ezt írtam le... hogy a rendszered a vesszőt veszi alapból elválasztónak, nem a pontot.
Ha te definiálod neki, hogy mit értelmezzen tizedes elválasztónak, akkor működni fog, ahogy a fenti mintakód is működik. Próbáld ki. -
Szabesz
őstag
válasz
Neil Watts #3581 üzenetére
double.parse vagy double.tryparse-vel próbálkoznék inkább.
szerk: több mint valószínű, hogy a fentiek is elhasalnak majd nálad, mert a tizedes elválasztó az esetedben a pont lesz és nem a vessző. [link] definiálsz egy megfelelő providert, és menni fog.
-
Szabesz
őstag
Az eddigiek alapján egy memória zabáló vírust akarsz írni. Ragyogó.
Ráadásul taskngr.exe a már foglalt.
-
Szabesz
őstag
válasz
WonderCSabo #3214 üzenetére
Tisztában vagyok vele. Csak a miértekre próbáltam rámutatni.
-
Szabesz
őstag
-
Szabesz
őstag
Attól függ ilyen valid -e megoldásként nálatok:
Szemely[] t = { new Szemely{Eletkor=19, Nev="Lajos"},
new Szemely{Eletkor=25, Nev="Monika"},
new Szemely{Eletkor=28, Nev="Peter"},
new Szemely{Eletkor=19, Nev="Gabor"},
new Szemely{Eletkor=25, Nev="Peter"},
new Szemely{Eletkor=18, Nev="Andrea"},
new Szemely{Eletkor=31, Nev="Peter"},
new Szemely{Eletkor=29, Nev="Gabor"},
};
t = t.OrderBy(p => p.Nev).ToArray(); -
Szabesz
őstag
válasz
Vasinger! #1899 üzenetére
A szöveget értelmezd. Amíg a vagy előtti rész nem lesz false, addig a vagy másik oldala sosem értékelődik ki (mert minek, a vagy eldöntéséhez elég egy true). Ha soha nem lesz a vagy első fele false, vagyis nem üres név, akkor sosem áll le a ciklus. Megoldás: vagy helyett és operátorral próbálkozz (ésnél mindkét oldal kell a feltétel eldöntéséhez). (Még az "=="-t is gondold át)
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- HP Spectre x360 Érintős Hajtogatós Laptop Tab 16" -60% i7-1360P 32/2TB Intel Arc A370M 4GB UHD OLED
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -60% i5-1135G7 4Mag 16GB /512GB FHD IPS
- Samsung Q80T 55" QLED - 4K 120Hz VRR / FreeSync / HDMI 2.1
- ÚJ HP ENVY 17 Nagyképernyős "Kis Gamer" Laptop -45% 17,3" Brutál i7-13700H 16/1TB Iris Xe FHD IPS
- Legion Go 8APU1
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest