- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- GoodSpeed: AMD Ryzen 9 9900X (100-100000662WOF)+ Samsung 990 PRO 2TB MZ-V9P2T0BW
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- gban: Ingyen kellene, de tegnapra
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Real Racing 3 - Freemium csoda
- bitpork: Phautós tali a Balcsinál 2025 Augusztus 2 napján (szombat)
- Rap, Hip-hop 90'
Hirdetés
Új hozzászólás Aktív témák
-
ArchElf
addikt
Hálózati scannert írtam ezzel a technikával, meg a szakdolgozatomban egy behaviour monitoring rendszert csináltam, és az is többszálú volt (több log-forrást kellett egymás mellett feldolgoznia). Igazából ott egy csomó mindent kipróbáltam a multitherading mellett:
- teszt esetek, teszt források, többszálúság tesztelése, streszteszt, stb.
- dll futás közbeni betöltés, Interface alapú osztály használatAE
-
ArchElf
addikt
A probléma az, hogy ha valami bugfix (semmi változás a publikus funkciók felépítése) van az egyik projekt dll-ben, akkor az egész solution-t újra kell fordítanom. Hiába fordítom csak újra egyedül a DLL-t és cserélem ki a az előző build fájlájával nem fut vele a program.
AE
-
ArchElf
addikt
Attól még, hogy managelt a kód, nem biztos, hogy a forrást is megkapod hozzá. Onnantól meg mindegy, hogy hol a hiba: manageltnél a managed dll-ben, vagy csomagoltnál a wrapper rossz, esetleg a csomagolt dll kódja hibás.
BTW hogy lehet úgy fordítani egy alkalmazást, hogy a managelt DLL-ek - amiket más projektekben fordítok - kézzel cserélhetők legyenek install után (ne kelljen az új dll-el újrafordítanom a programot és újratelepítenem az egészet)?
AE
-
FehérHolló
veterán
Az a helyzet, hogy elég sok igazság van ebben, amit írtál. Nekem muszáj volt wrappert használnom (egyetlen interfész egy CAN és LIN hálókártya felé). Előjöttek ezek a dolgok, és rengeteget szívtam miattuk, amíg sikerült minden wrapperbeli hibát kikerülnöm (mivel elhárítani nem tudtam a wrappelés miatt).
-
ArchElf
addikt
Idézet az oldalról:
Extraction is supported from any archive format in InArchiveFormat - such as 7-zip itself, zip, rar or cab and the format is automatically guessed by the archive signature (since the 0.43 release).
You can compress streams, files or whole directories in OutArchiveFormat - 7-zip, Xz, Zip, GZip, BZip2 and Tar.AE
-
x007
tag
Nehezen tudtam elképzelni, de feltelepítettem az IDE-t, ott van az:
[link]Innentől annyi a dolgod, hogy csinálj egy különálló alkalmazás szerver szoftvert, ami az adatbázis műveleteket végzi. A különböző funkciókat publikáld szolgáltatásként. Importáld a szolgáltatást az SL alkalmazásba, a generált proxy osztállyal el fogod tudni érni a funkciókat.
-
x007
tag
Tanulmányozd a Binding objektumot... Nagyon sokmindent meg lehet vele csinálni.
http://www.c-sharpcorner.com/UploadFile/mahesh/WPFDataBinding08012008233147PM/WPFDataBinding.aspx -
x007
tag
Linq to SQL
Entity FrameworkEzek nem alternatívái a DataSet-nek, mert kapcsolatalapú adatelérést biztosítanak ellentétben a DataSet-tel, ami kapcsolat nélküli adatelérést biztosít. Keress rá, hogy ezek mit jelentenek, nem akarok regélni
.
Mérlegelni kell, hogy az alkalmazásodnak melyik jó. Én úgy gondolom, hogy egy szótár szoftvernek fölösleges betöltenie az összes szót a memóriába, így érdemes használni a fent említett két technológia közül az egyiket. Linq to SQL-t szoktam használni, de a jövő egyértelműen az Entity Framework (mondjuk jelen állapotáról nem sok jót hallottam eddig
).
-
x007
tag
-
x007
tag
Olvass dokumentációt...
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx -
x007
tag
Jaaaa, WPF-ben nincsen gyári DoEvents, viszont van workaround:
private void button1_Click(object sender, RoutedEventArgs e)
{
button1.IsEnabled = false;
WpfApplication.DoEvents();
Thread.Sleep(3000);
button1.IsEnabled = true;
}
/// <summary>
/// Designates a Windows Presentation Foundation application model with added functionalities.
/// </summary>
public class WpfApplication : Application
{
private static DispatcherOperationCallback exitFrameCallback = new
DispatcherOperationCallback(ExitFrame);
/// <summary>
/// Processes all UI messages currently in the message queue.
/// </summary>
public static void DoEvents()
{
// Create new nested message pump.
DispatcherFrame nestedFrame = new DispatcherFrame();
// Dispatch a callback to the current message queue, when getting called,
// this callback will end the nested message loop.
// note that the priority of this callback should be lower than the that of UI event messages.
DispatcherOperation exitOperation = Dispatcher.CurrentDispatcher.BeginInvoke(
DispatcherPriority.Background, exitFrameCallback, nestedFrame);
// pump the nested message loop, the nested message loop will
// immediately process the messages left inside the message queue.
Dispatcher.PushFrame(nestedFrame);
// If the "exitFrame" callback doesn't get finished, Abort it.
if (exitOperation.Status != DispatcherOperationStatus.Completed)
{
exitOperation.Abort();
}
}
private static Object ExitFrame(Object state)
{
DispatcherFrame frame = state as DispatcherFrame;
// Exit the nested message loop.
frame.Continue = false;
return null;
}
}Megjegyzem, hogy ez továbbra se fogja teljes mértékig megoldani a problémát, mert az ablak ugyanúgy meg fog fagyni a DB kapcsolat tesztelésekor. (WinForms esetén is így lenne) Szóval mindenképpen javaslom a BackGroundWorker használatát.
-
x007
tag
A problémádat megoldja, hogyha a DisableControls() után meghívod a Application.DoEvents() metódust. Az ilyen megoldásokat azonban, ha lehet, kerüljük. Általánosságban elmondható, hogy időigényes feladatokat nem hajtunk végre a GUI szálon (ilyen egy vezérlő eseménye is, pl: Click), hanem egy új szálat hozunk létre, hogy a végrehajtás a háttérben történjen. Ezt könnyen megteheted a BackgroundWorker komponens segítségével, elég sok problémát levesz a programozó válláról.
Valami ilyet kéne csinálnod:
private void button1_Click(object sender, EventArgs e)
{
DbDetails arg =
new DbDetails
{
Server = ...,
Database = ...,
User = ...,
Password = ...,
};
connectStatusBar.Items[0] = "Testing connection...";
DisableControls();
backgroundWorker1.RunWorkerAsync(arg);
}
private class DbDetails
{
public string Server { set; get; }
public string Database { set; get; }
public string User { set; get; }
public string Password { set; get; }
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
DbDetails arg = e.Argument as DbDetails;
e.Result = TestConnection(arg.Server, arg.Database, arg.User, arg.Password);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null && (bool)e.Result)
{
//Sikerult csatlakozni
//TODO: Impl
}
else
{
//Nem sikerult csatlakozni
//TODO: Impl
}
}A DoWork eseménykezelőbe kell helyezned a kódot, amit a háttérben szeretnél végrehajtani. Fontos, hogy ebben nem hivatkozhatsz a Form-on található vezérlőkre szinkronizációs problémák miatt. Ezért van szükség jelen példában a DbDetails segédosztályra.
A RunWorkerCompleted eseménykezelő a feladat végrehajtása után mindig végrehajtódik. Ha valamilyen kivétel keletkezett, akkor azt a e.Error tulajdonságból kiolvashatod. Az e.Result tulajdonságból a DoWork eseménykezelőben beállított visszatérési érték olvasható ki.
-
Lortech
addikt
a gombok es textbox-ok csak akkor lesznek hajlandoak elszurkulni, ha mar megvan a testConnecion metodus viszateresi erteke
Miből jött le, hogy már megvan adott pillanatban a testConnection visszatérési értéke, hogy lehet meg a visszatérési értéke, ha elvileg meg sem hívtad?
Ránézésre szerintem nem a bemásolt kódban keresendő a megoldás, hanem valami olyan kódról, amiről nem tudod, hogy hamarabb fut le, mint gondolnád, pl. static vagy konstruktorok, vagy el elfelejtett metódus hívás. testConnection-re mehetne egy method breakpoint és hívási fát meg kéne nézni.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Ingatlanos topic!
- Arch Linux
- Tudományos Pandémia Klub
- Milyen légkondit a lakásba?
- Luck Dragon: Asszociációs játék. :)
- Büszke apukák és anyukák topikja
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Battlefield 6
- Nincs kill switch az NVIDIA chipekben
- Elektromos autók - motorok
- További aktív témák...
- Gamer PC - 3060Ti Founders, i5 12400f, 16gb DDR5
- Apple iPhone 15 Pro (Használt, független , 512 GB, 8 GB RAM, Natúr Titán)
- Samsung Galaxy Z Flip6 (használt, független , 256 GB, 12 GB RAM, ezüst)
- Honor 400 Pro (Újszerű, Független, 512 GB, 12 GB RAM, fekete)
- Apple iPhone 15 Pro Max (használt, Független, 256 GB, 8 GB RAM, Titánium kék)
- Samsung Galaxy A23 128GB Kártyafüggetlen 1 év Garanciával
- GYÖNYÖRŰ iPhone SE 2020 128GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS2183, 100% Akkumulátor
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 16GB I 512SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Audio-Technica ATH-M20x fejhallgató
- AKCIÓ! GIGABYTE AORUS ELITE Z790 i7 14700K 64GB DDR5 1TB SSD 7900 XTX 24GB be quiet! SB 802 1000W
Állásajánlatok
Cég: FOTC
Város: Budapest