- DUNE médialejátszók topicja
- Azonnali fotós kérdések órája
- Hogy is néznek ki a gépeink?
- VR topik
- Leszámol a saját Linux disztribúciójával az Intel
- Amazon Kindle
- Kormányok / autós szimulátorok topikja
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Bluetooth hangszórók
- Egyedi megjelenésű Radeon VGA a Yeston és a GravaStar keze nyomán
Új hozzászólás Aktív témák
-
joysefke
veterán
https://www.nuget.org/packages/System.Data.SQLite/
Itt at írják, hogy elég nek a netstandard 2.0
-
Keem1
veterán
válasz
martonx #9297 üzenetére
Ezen már sokat gondolkodtam, de sok Nugetes motyóm nem kompatibilis vele. Pl. az SQLite (System.Data.Sqlite) sem, ARM-re nem volt 4.5-re sem, de oda simán fordítottam egyet az eszközön forráskódból. .Net Core-ra viszont eddig még nem sikerült.
(#9298) joysefke:
A Task-on már én is agyaltam, de amikor próbálkoztam, valahogy nem jött össze. Már nem emlékszem, hogy egy statikus metódussal gyűlt-e meg a baja, vagy azon aztán átlendültem és máshol akadtam el. Aztán végül a Bgwk lett az első, ami működött.Sajnos nem vagyok programozó, csak egy lelkes amatőr, így ha valahol elakadok, hajlamos vagyok rövidebb utat választani
Viszont a C#-ot szeretem, így néha olyan célra is ezt választom, ami szkriptnyelvből, Powershellből is megoldható lenne (melyekhez még a C#-hoz képest is kevésbé mozgok otthonosan).
-
joysefke
veterán
Mi lenne a proper way helyette?
Nem vagyok biztos benne (*).
De első körben én megnézném, hogy Program.cs.Main()-ben egy új meztelen Thread-et létrehozva és azon indítva a WebHost-ot, hogyan viselkedik a webserver. De én a Thredeket sem szeretem* Ami miatt bizonytalan vagyok, az az, hogy hogyan akarjuk/tudjuk kezelni a webservice esetleges chrashét. (egyáltalán akarsz-e ezzel foglalkozni):
Ha a background thread (ami a webservert futtatja) crashel (kezeletlen exception jön belőle) akkor érdemes lenne ezt az exceptiont valamilyen szinten elkapni, loggolni és vagy újraindítani a szervert vagy inkább az egész alkalmazást leállítani. Ez az egész opcionális, de alapvetően nem egészséges megadni az esélyét hogy egy bármilyen threadben kezeletlen exception ragadjon.
Ahogy nézem a BackgroundWorkeren van egy erre használható event: "RunWorkerCompleted" , az eventargs pedig: "RunWorkerCompletedEventArgs" ennek pedig van egy Error propertyje ami az esetlegesen elkapott exceptiont tartalmazza...
Ha Threadben gondolkodsz akkor jó pár alternatív opciód van amit mérlegelhetsz.
De én valószínűleg Task-ként futtatnám a webservert. A te esetedben nyilván az volt a "baj", hogy a WebHost.RunAsync() metódus által visszaadott Task-ot azonnal awaitelni akartad a fő száladon, így a fő programszál nekiállt async várakozni a Task elkészültére, ami ugye egy szervernél amíg le nem állítják nem fog megtörténni.
Ha a fő programszálad amúgy sem lép ki magától akkor szerintem a a WebHost.RunAsync() által visszaadott Task-ot sem kell nekiállnod awaitelni benne (ha tudod, hogy exception történt akkor érdemes) ettől függetlenül a viszakapott Task refernciáját nyilván elmented, hiszen ezen keresztül mindig tudod ellenőrizni az állapotát és szükség szerint awaitelve ki is tudod belőle szedni az esetleges exceptiont.
A fenti példában például a Console.ReadKey() blokkolja a fő szálat. Amíg a fő szál nem ért véget, addig a background threadeket (beleértve amelyek Task-ba vannak csomagolva) a runtime nem zárja be addiíg amíg azok nem fejezik be maguktól a futást.
-
Keem1
veterán
válasz
joysefke #9295 üzenetére
Mi lenne a proper way helyette?
A lényeg: Raspberry Pi-n futtatok egy .Net 4.5 alapú servicet, ami különböző automatizálási feladatokat hajt végre, adott esetben, ha a feladat jellege megkívánja, az adatok MySQL adatbázisban landolnak (localhost). Az egyszerű webes felületnek két célja van: ha időm és energiám engedi, később lesz egy Androidos app is hozzá, ehhez szolgáltatna JSON API-t, másrészt jelenleg böngészőből érek el pár infót erről a service-ről, a Pi különböző paramétereit is. Szóval erre kell nekem, ezért választottam "rendes" webszerver helyett ezt a megoldást.
-
Keem1
veterán
Srácok, biztos hogy nem látom a fától az erdőt, de az aszinkron programozással mindig meggyűlik a bajom
Az alábbi egy .Net Core Console application részlete.
A BackgroundWorker nélkül működik az alábbi, de nyilván ekkor lefoglalja a main threadet a microwebserver, ezt szeretném elkerülni. Tehát a program fusson tovább, a webserver meg szépen a háttérben. Mit rontok el?
Szerk: fene vigye el, megvan a hiba
Lemaradt ez:
bgw.RunWorkerAsync();
, így már működikclass Program
{
static BackgroundWorker bgw = new BackgroundWorker();static void Main()
{
Console.WriteLine("WebGUI Teszt");
StartWebGui();
Console.ReadKey();
}static void StartWebGui()
{
var hostBuilder = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.UseUrls("http://localhost:808/")
.Build();if (bgw.IsBusy == false) bgw.DoWork += (sender, e) =>
{
hostBuilder.Run();
};
}
} -
fatal`
titán
válasz
martonx #9289 üzenetére
Mondjuk, amihez scala.js-t használtunk az bőven 10k+ sor és egy igen bonyolult űrlap több száz, adott esetben többezer mezővel, amik között rengeteg validáció és kapcsolat van. A backend meg ASP.NET MVC razorral (2015-ös projekt), szerintem indokolt volt.
Egyébként már az, hogy típusos a frontend szerintem életmentő, emiatt akár pársoros js esetén is indokolt lehet a ts. Persze angular meg egyebek sok esetben felesleges.
(#9291) harylmu: Én láttam már apró weboldalt is angularral, ami szerintem is overkill.
-
martonx
veterán
Ez már tényleg nagyon off, de manapság elindult egy trend, ahol frontend huszárok mindenhez is rögtön angulart, meg reactot typescripttel, rxjs-el, redux-al (izé most a recoil a menő), meg mittudomén mi mindennel rántanak elő. Aztán napokig dolgoznak egy egy oldalon, aminek a feladat annyi, hogy egy form van rajta, amin megadsz pár adatot, és gombnyomásra elpostolja a szervernek. Na, erre értettem, hogy a typescript overkill frontenden. Nyilván van olyan frontend eset, ahol tényleg hasznos tud lenni, viszont azt látom, hogy a typescript-es frontend projektek többségében, csak szimpla öncélú bonyolítás, mert a frontendes részleg meg akarja mutatni a backendnek, hogy igenis ők is tudnak sok n rétegben, interface-ekben, DI-ban, meg bonyolult kódokban gondolkozni, akkor is ha csak egy fos formot kell bekérni 4 adattal.
-
joysefke
veterán
és ezek a sriptek amelyek átmennek ezen a security checken, ezek digitálisan alá vannak írva és a futtatókörnyezet meg is tíltja a nem aláírt scriptek futtatását, vagy a managerek szerint minden ami sript az biztonságos, minden ami bináris az nem (akkor is ha a saját tool- fejlesztőik írták)?
-
Alexios
veterán
-
Keem1
veterán
válasz
martonx #9278 üzenetére
Nyilván az is a nagy előnye, hogy baromi elterjedt. Szerintem Windowson kívül ott van minden rendszeren preinstalled. Pl. a Pi-hez "tartozó" Raspbianon is out-of-the box ott volt a Python.
Ugyan Pi-re simán feldobtam a Mono-t, még package managerrel is simán megy a saját appom, de én informatikus vagyok, nem hiszem hogy egy mezei usernek ez menne bármilyen Linuxon.
Uppsz, sorry, ez nem válasz akart lenni
-
martonx
veterán
válasz
Froclee #9276 üzenetére
Nálunk a cégnél mostanában kezdtek a C# mellé Pythonos Web Api-k bejönni. Egészen elképesztően kókány szarok a kódjaik (de legalább lassúak is), az Asp.Net Core-al összevetve.
Pedig én pl. a PHP-t kimondottan szeretem, Pythont is magamtól raktam a gépemre, hogy eljátsszak vele, azaz nem vagyok az a fanboy típus.
Szerintem mint nyelv, semmi gond nincs a gyengén típusossággal, tök jó a PHP, Python. Kis egyszerű konzol appokat, web api-kat összedobni bennük, data science-kedni (ami szintén nem programozás, maximum egy kis scriptelés), megtanulni programozni tök jók. Viszont komolyabb alkalmazásokat csak bolondok írnak ezekben. -
Keem1
veterán
válasz
joysefke #9275 üzenetére
Alapvetően nincs baj, de mostanság az a módi, hogy mielőtt a céges "szoftverboltba" bekerülnének ezek, a részlegünk egyik managere részéről átnézésre kerülnek a kódok (nem programozók), és csak ha jóvá hagyták, akkor mehetnek fel. Már eleve a rendszer úgy működik az utóbbi időben, hogy .py és hasonló (php, sh, ps1, stb) fájlokat fogad el, .exe-t nem. Bocs, de, elfogad mást is, de utólagos check jön, mielőtt a többi team membernek elérhetővé válnak. És azon a manuális check-en nem mennek át a binárisok.
-
Froclee
őstag
En is dotnet melobol mentem at Python-ba tavaly. (Mondjuk en nem nagyon nezem a hasznalt nyelveket munkahelyvaltasnal, nekem tok mindegy.
) A tapasztalatom az igy masfel ev utan, hogy kva szar.
Scriptek irasara, meg data science-re egyebkent nagyon szuper, de tipusok hianyaban remalom egy 3 ezer soros webapp-ot fenntartani (raadasul Python 2-est). A masik baj vele, hogy mocsok lassu - fika loadra 30-40 instancet kell fenntartani, Amazon rajtunk gazdagszik meg.
-
Keem1
veterán
Jó, én nem vagyok programozó, de a jelenlegi és az előző munkahelyemen is csinálgattam munkamegkönnyítő toolokat, mindegyik esetben C#-ban írtam őket. Itt most a jelenlegi cégnél (egy amerikai nagyvállalat) mindennél jobban preferálják a Pythont. Vannak kollégák, akik ismerik a nyelvet, így a toolokat most ők fejlesztik. A céges belső policy egyre jobban tiltja/üldözi a compiled exéket.
-
Keem1
veterán
public partial class MainWindow : Window
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
// A program indulásakor beolvassa a táblázatot
Read();
// 10 percenként újra beolvassa
dispatcherTimer.Tick += new EventHandler(Reload);
dispatcherTimer.Interval = new TimeSpan(0, 10, 0);
dispatcherTimer.Start();
} -
cigam
titán
Egy új probléma lépett fel. Létrehozok egy időzítőt, ami 10 percenként meghívja az újrabeolvasó rutint.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// A program indulásakor beolvassa a táblázatot
Read();
// 10 percenként újra beolvassa
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(Reload);
dispatcherTimer.Interval = new TimeSpan(0, 10, 0);
dispatcherTimer.Start();
}
Viszont nem tudom leállítani(elérni) egy másik függvényből? Mit csinálok rosszul?
-
rgeorge
addikt
És mi szerepel az AssemblyInfo.cs-ben?
-
cigam
titán
Az ablak Title szövegében szeretném kiírni a verziószámot. Itt írnak egy megoldásról , de mindég 1.0.0.0-át ír ki. A project Properties szerint a a Publish version: 1.0.0.7
Az XAML-be ez van:
Title="{Binding WindowTitle, RelativeSource={RelativeSource Mode=Self}}"
A kódban pedigpublic string WindowTitle {
get {
Version version = Assembly.GetExecutingAssembly().GetName().Version;
return "MyTitle v" + version; }
}
-
zsolti_20
senior tag
válasz
martonx #9258 üzenetére
Hmm ez eleg jo megoldasnak tunik. Szuksegem van egy c# programra ami kikuldi soros porton a cella tartalmat, mert az excel vba minden kuldesnel felepiti a sorosport kapcsolatot ami kb 1mp-et vesz igenybe.
Viszont nyitva tudom tartani vele a portot a c# szamara ami remephetoleg nem kivanja megnyitni ujra a kapcsolatot igy lentebb tudom tolni kicsit ezt a kesleltetest. -
martonx
veterán
válasz
zsolti_20 #9256 üzenetére
Excel makro mindent IS tud. Ha a mentés ilyen gázos, akkor ne mentsd. Csak simán kapd el a cell változást, és hívd meg belőle a C# konzol appot. Persze ekkor meg erősen kérdéses, hogy minek a C# konzol app.
Illetve leírtam a tisztán C# megoldást is: "De ha már mindenképpen ragaszkodsz ehhez az elcseszett felálláshoz, akkor ott a Visual Studio Tools for Office és az Excel.Application.SheetChange event, amire C#-ban fel tudsz iratkozni."
-
zsolti_20
senior tag
válasz
martonx #9251 üzenetére
Sajnos nem találtam még most sem megoldást hogy tudnám kiolvasni a cella tartalmát mentés nélkül. A gond az, hogy ez változik minden 0.5mp-ben. Így ha a mentést még bele rakom VBA scriptben akkor pár érték kimarad.
Az excelre viszont szükségem van, mert csak ezzel tud kommunikálni egy másik script. -
joysefke
veterán
Szeretném használni a személyes fejlesztési keretemet könyvvásárlásra. (Pluralsightom már van)
-(1) ASP Netcore.
Itt a Pro asp net core 2-t olvastam Adam Freeman-től pár éve, az anno nekem nagyon hasznos volt, de ahogy néztem nem nagyon újítja fel a példaprojektjeit, tehát szeretnék mást, most valami advancedebbet.-(2) EF Core, Adatbázis, adatmodellezés témákhoz az aktuálisak közül melyek a legjobb könyvek?
-(3) Blazor / webassembly van már annyira stabil, hogy megérje kicsit beleásnom magam?
Ez utóbbi max érintőlegesen érdekel, de valamire el kell költeni a pénzt -
martonx
veterán
válasz
zsolti_20 #9250 üzenetére
Nézd, amíg nem mented el a file-t, addig szerencsétlen program nyilván csak az utolsó mentett állapotot fogja látni.
Egyébként nem tudom mit szeretnél, de valahogy háttal ülsz a lovon. Egyáltlán miért excel, és miért konzol app? Ha mindenképpen excel, és excelen belüli mentés nélküli cella változásokra akarsz reagálni, akkor arra az excel makró való.
De ha már mindenképpen ragaszkodsz ehhez az elcseszett felálláshoz, akkor ott a Visual Studio Tools for Office és az Excel.Application.SheetChange event, amire C#-ban fel tudsz iratkozni.
-
zsolti_20
senior tag
Sziasztok! Írtam egy egyszerű console appot ami kitudja olvasni a bizonyos cella értékét excel fileból, de a problémám az, ha megváltoztatom, az értéket a programom a régit olvassa. Gondolom előre feltölti a memóriába az excel filet és abból dolgozik, így csak akkor lesz olvasható számára a változás ha az excel file mentésre kerül és újból lefuttatom a file megnyitás részét a kódnak.
A problémám az, hogy ez elég időigényesnek tűnik, mert másodpercenként legalább 2 értékváltozást kikellene olvasnia.
A kérdésem az, hogy lehetséges úgy megoldani hogy mint cserélem az értéket a cellában úgy a programom is felismerje és kitudja olvasni?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int i = 0;
string path = "mappa+filenév";
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Worksheet excelSheet = wb.ActiveSheet;
while (i < 5)
{
Console.WriteLine(i);
string test = excelSheet.Cells[1, 1].Value.ToString();
Console.WriteLine(test);
}
wb.Close();
//Read the first cell
}
}
}
-
joysefke
veterán
válasz
martonx #9248 üzenetére
Hát én a helyedben Asp.Net Core 2.1-el állnék neki
Végül az lesz.
Ugyanakkor nem értem, hogy miért erőlteted a netstandard2.0-át. .Net 4.7.2 netstandard 1.x-ig jó, én a meglévő komponensek esetében megelégednék netstandard 1.x-el, amit viszont zokszó nélkül tud használni a .Net Core 3.1 is.
A netstandard2.0-t a Core 3.1 és a net472 is ,egvalósítja. Semmit nem nyernénk, ha 2.0 alatti standardot próbálnánk targetelni, csak saját dolgunkat nehezítenénk meg.
A konvertálás úgy fog zajlani, hogy projektről projektre (levelekkel kezdve amelyeknek nincs dependenciája másik saját prokjekt felé) egyenként át lesz állítva a csproj formátum modernre (SDK style és package reference) a <TargetFramework> property pedig net472-től netstandard2.0-ra. Mivel a netstandard2.0 API szűkebb API mint a net472 ezért lesznek olyan hívások amit ki kell szervezni vagy ki kell vágni vagy helyettesíteni kell mással, mert nincsen standardes megfelelője. Minnél alacsonyabb standardet próbálnánk targetelni, annál nehezebb dolgunk lenne, mert annál több frameworkos API-nak nem lenne standarden megfelelője. Így is nehéz dolga lesz annak aki csinálni fogja, már volt egy nekifutás...
A saját új class library projekteknél pedig azért nincsen értelme netstandard2.0 alá targetelni, mert az összes futtatókörnyezet ami képben van (jelenleg a net472 és később meg valami core-latest) megvalósítja a standard2.0-t.
-
martonx
veterán
válasz
joysefke #9246 üzenetére
Hát én a helyedben Asp.Net Core 2.1-el állnék neki, ha már mindenképpen cél az ősi .Net Framework 4.7.2
Ugyanakkor nem értem, hogy miért erőlteted a netstandard2.0-át. .Net 4.7.2 netstandard 1.x-ig jó, én a meglévő komponensek esetében megelégednék netstandard 1.x-el, amit viszont zokszó nélkül tud használni a .Net Core 3.1 is. -
sztanozs
veterán
Ha "rendesen" leállítod, akkor a szerver vagy a kliens dob a túloldalra egy FIN csomagot. Ezzel értesíti a túloldalt, hogy a csatornát be kell zárni. Sztenderd módon a túloldalnak válaszolni kell egy ACK csomaggal és küldenie szintén vissza egy FIN csomagot amit a kezdeményező oldal lenyugtáz egy ACK-val. Tehát, ha normál módon (Listener.Close vagy Client.Close-zal) zársz le egy kapcsolatot, akkor a túloldal értesülni fog róla, hogy bezárod, így nem tartja nyitva a csatornát.
Alapból a TCP protokoplban nincs keepalive ping, szóval, ha kézzel vezérled a TCP kapcsolatot, akkor simná le tudod lőni a listener-t és újra felhúzni, feltéve, ha vissza tudod állítani a TCP stack-et a lezárást megelőző állapotba (tehát tudni fogod, milyen porton kivel kommunikál). -
joysefke
veterán
El vagyok veszve az ASP verziók és szuboptimális lehetőségek között, segítség kéne
Egy új ASP Web API projektet kell írni (REST, json). A saját már létező komponensek amiket kikerülhetetlenül használni kell, targetje Net472. Jó pár ezek közül nem konvertálható egyszerűen netstandard2.0-ra, és ezen adott idő alatt nem tudunk segíteni, ez már eldölt.
Az új az ASP web-projekt mellé készülő library komponensek targetje Standard2.0 lesz, ez a stratégiai irány. A régi komponensek is előbb vagy utóbb átvándorolnak standard2.0-ra, de ez nem most lesz.
Az ötlet az, hogy használunk "valamilyen" .Net Framework 4.7.2+ -en futó ASP verziót, használjuk a meglévő saját frameworkos librarykat az újakat pedig standard2.0-ban gyártjuk. Aztán amikor alkalom adódik rá, az ASP projektet is migráljuk/lecseréljük a majdani legfrissebb ASP Net Core-ra.
Az ASP projekt alá jelenleg olyan kevés kód kerülne ami csak lehetséges, minden ami szükséges standard2.0-ás libraryba vándorolna, lehetőleg úgy hogy majd később asp net core alól változatlanul fel tudjuk használni.
=====
És akkor most tanácstalan vagyok, hogy nekem valami régebbi ASP NET Core-t kell nézni (ezek ha minden igaz 2.2-ig bezárólag tudtak futni Framework runtimen is, de erről csak olvastam) vagy valami legújabb ASP.NET 4.x -et Web API 2-vel??
Az ASP Net Core 2.x-ek ha minden igaz már end of life...
VS19 támogatásnak eléggé örülnék.
=====
Nézegettem a docs.mscom oldalt, de egyszerűen nem találtam jó táblázatokat...
-
coco2
őstag
[System.Net.Sockets.TcpListener] és [System.Net.Sockets.TcpClient] kérdés.
Arra lenne szükségem, hogy az egyszer elfogadott kapcsolatok biztosan stabilak maradjanak akkor is, ha a tcp listenert leállítom, és később újraindítom (támadások elleni védekezési lépések).
Azt persze tudom tesztelni, hogy listener .Stop() után az adatáram stabil marad, de az ugye valamelyik dotnet verzió esetén éppen úgy van, és nem elvi szintű ígéret, hogy később is úgy marad.
Próbáltam elvi szintű dokumentációkat keresni, mi is a szitu, de eddig nem találtam.
Ha irány vissza a kályhához, akkor van a nyers hálózati csomag, ip header + tcp header, és abban benne van a szerver oldali port is. Még ha egy megnyitott socket létezik is, az OS elvileg érzékelheti a listen port lezárását, és eldobhatja a beérkező csomagot azon az alapon, hogy bocsi, de a címzett porton jelenleg nincsen jegyezve semmi. Van arra szabványi előírás, ami egészen biztosan megtiltja az OS-nek, hogy olyat tegyen?
-
joysefke
veterán
Nem értem hogy mi a probléma meg milyen token referenciáról beszélsz.
A token egy struct, ami tartalmazza az őt létrehozó CTS referenciáját. Te ezt nem látod, mivel a token structon a cts-re mutató referencia nem publikus. (pont ez a pattern lényege, hogy ne lehessen össze vissza cancellelni csupán a cts birtokában)
A cancel pedig kétféle módon propagálódik:
1, Te manuálisan a saját magad függvényében ellenőrzöd, hogy történt-e cancel:
bool token.IsCancellationRequested vagy
void token.ThrowIfCancellationRequested()2, Valamelyik framework API akinek Task létrehozásakor átadtad a tokent ellenőrzi a token állapotát és saját maga rakja az általa felügyelt Task állapotát Cancelled-re. A TaskFactory gondolom egy ilyen valami. (nem ismerem a TaskFactory-t)
-
coco2
őstag
válasz
joysefke #9240 üzenetére
Elkerülendő a további félreértéseket, külön idemásolom a hivatkozott kódrészletet, mert az egész akkora égbekiáltó hazugság, hogy ihaj.
for (int ctr = 1; ctr <= 10; ctr++) {
lock (lockObj) { value = rnd.Next(0,101); }
if (value == 0) {
source.Cancel();
Console.WriteLine("Cancelling at task {0}", iteration);
break; }
values[ctr-1] = value; }
Ugyan had tegyem fel a költői kérdést, hol van annak a task kilépésnek bármi köze a cancel token változásához ?
(A teljes kód példa az előző hsz-ben a linken található.)
-
joysefke
veterán
A TaskFactory-val van a problémád vagy magával a CancellationTokenSource => CancellationToken mechanizmussal?
A cts -token egy távirányítós bomba. A bomba a Token a távirányító pedig a CancellationTokenSource. a kliens kódnál a távirányító (CTS) és a távirányítóhoz tartozó bombát átadja a hívott metódusnak a Token formájában. Te mindig a CTS-t hozod létre konstruktorral, a Tokent a CTS propertijeként kapod meg.
Amikor megunod a várakozást, robbantod a bombát a távirányítóval.
A példakódot lefuttattam, ott ha AggregateException jött jelzi azt, hogy a CTS-en meg lett hívva a cancel.
-
coco2
őstag
Sziasztok!
Segítséget szeretnék kérni a task pool cancel mechanizmus megértéséhez. Az msdn oldalak elolvasása után még mindig vakarom a buksit, hogy akkor ez most hogyan is. Konkrétan a menet közben élezhető cancel mechanizmus az, amit nem találok.
A task-okhoz van egy olyan, hogy [cancel token]. Kicsi szépséghibaként a konstruktora azt mondja, hogy vagy false-al töltöm, amikor sem nem ad cancel parancsot, nem nem képes arra kapcsolni, vagy true-val töltöm, és akkor meg alapból cancel parancsot ad, amit átmenetileg kikapcsolni sem tudok. Példa kódokból is csak mellébeszélőseket találtam.
Fésülte már ki valaki azt a gubancot egyenesre?
-
petyus_
senior tag
Közben sikerült rájönnöm, az attribute-ban amikor visszaadtam a ValidationResult-ot, nem adtam át a memberName-t.
Ezért amikor az adott field-et módosítottam, odarakta az errort, mert tudta, hogy azzal van a gond, viszont amikor submit-ra nyomtam, akkor nem tudta, hogy melyik fieldhez tartozik az error. -
petyus_
senior tag
Sziasztok!
Blazorrel foglalkozik itt valaki? Egy angular app-ot kezdtem el átírni, és előjött egy hiba, amit sehogy sem tudok megoldani.
Van egy formom, a model-validationt attribute-okkal oldom meg. Írtam egy saját attribute-ot, RequiredIf, megadhatod benne, hogy akkor legyen required a field, ha egy másik property-nek az értéke egyezik azzal, ami megadsz.
pl:
[RequiredIf(nameof(Foo), new[] { "Bar"}, ErrorMessage = "Category must be set.")]
public int? CategoryId { get; set; }Itt a másik property a Foo, ha Bar az értéke, akkor a CategoryId nem lehet null vagy 0.
Ezt a modellt használom a Blazor formban, és a validation kicsit furán működik. Foo-t beállítottam Bar-nak. Raktam a formba egy ValidationSummary-t is, és az adott field-hez tartozó ValidationMessage-t is.
Ha nyomok egy submit-ot, akkor a ValidationSummary-ben megjelenik az error, de az input mellett nem.
Ha megváltoztatom az ehhez a fieldhez tartozó inputot, akkor megjelenik a ValidationSummary-ben, így ott kétszer szerepel az error, közben megjelenik a ValidationMessage is, és az input is piros lesz.
Ha most megint nyomok egy submitot, akkor a summary-ből az egyik error eltűnik, a field mellet message is, és az input zöldre vált.Csatolok képet, van ott egy Amount field is, az sima int (nem nullable), és egy Range[(1, int.Max)] van rajta, az teljesen jól működik.
Valakinek esetleg van ötlete?
-
joysefke
veterán
Úgy tűnik csak a topik halott, nem a .NET
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
-
OldBoyDev
újonc
Szervusztok!
A problémám: van egy formom rajta egy adatrács feltöltve adatokkal, innen meghívok egy másik formot fx.Show(); itt teszek dolgokat, majd visszatérek az első formba. És azt szeretném, hogy frissíteni tudjam az első formon lévő tableadaptert és ezáltal az adatrácsot is.
Bocs, ha körülményesen fogalmaztam. A környezet: Winforms és C#.
Köszönöm! -
Alexios
veterán
válasz
DrojDtroll #9226 üzenetére
Én fejlesztettem még rá régen, bár túl sok minden nem rémlik már belőle
-
DrojDtroll
veterán
válasz
DrojDtroll #9225 üzenetére
A HorizontalAlignment property nélkül tökéletes középen van.
MÁS:
Van itt olyan forumtárs aki annó fejlesztett windows 8-as vagy 8.1-es telefonra? -
DrojDtroll
veterán
Sziasztok!
Egy kis WPF WTF
Van egy Image control-om aminek a HorizontalAlignment-jét próbálom beállítani. Left és Right értéken tökéletes, de Centeren nem esik középre.
https://www.youtube.com/watch?v=QZgKbiGMaQg&feature=youtu.be
Mi lehet a megoldás?
-
joysefke
veterán
válasz
Jokerpoker #9222 üzenetére
Ha a hosszra vagy kiváncsi (ami kódolástól függően nem feltétlenül egyenlő a karakterek számával)
https://docs.microsoft.com/en-us/dotnet/api/system.io.fileinfo.length?view=netcore-3.1 -
dqdb
nagyúr
válasz
Jokerpoker #9222 üzenetére
Project Properties > Build > Prefer 32-bit opció kikapcsolása, hogy lehetőleg 64 bites változat induljon el 64 bites OS-en a programból.
Azt azért megjegyezném, ha előre lehet tudni, hogy hatalmas fájlokkal lesz dolga az embernek, akkor feldolgozás megírásakor a legutolsó utáni dolog után jön csak pár lépéssel az a megoldás, hogy beolvassa a memóriába az egészet.
-
Jokerpoker
csendes újonc
Sziasztok!
Írtam egy programot, ami kiírja egy .txt fájl hosszát. A program "OutOfMemory" hibakódot dob ki, de csak 2GB ramot terhel, miközben a gépemben 16GB memória van.
Hogyan lehet ezt a "korlátozást" megszüntetni?A program kódja a következő:
string path = @"C:\test.txt";
StreamReader sr = new StreamReader(path);
Console.WriteLine("Karakterek száma a szövegben: {0}",sr.ReadToEnd().Length);
Köszönöm a válaszokat előre is! -
dqdb
nagyúr
válasz
DrojDtroll #9219 üzenetére
Ne a rendszerben található, .NET Frameworkhöz tartozó dll-t add hozzá referenciaként, hanem ezt a NuGet csomagot.
-
DrojDtroll
veterán
.net core 3-as web api-s projektben miért nem tudom használni a Bitmap class-t? Amikor bereferenciálom a system.drawing.dll-t a következőt kapom:
Failed to create the wrapper assembly for type library "{d37e2a3e-8545-3a39-9f4f-31827c9124ab}". Type library 'System_Drawing' was exported from a CLR assembly and cannot be re-imported as a CLR assembly.
-
Dinter
addikt
Sziasztok!
UWP-ben állítanám be az ablak szélességet, minndehol ezt az egy fajta megoldást írják:
ApplicationView.PreferredLaunchViewSize = new Size(531, 900);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Hiába állítom be, 20-ból egyszer működikMiért?
-
joysefke
veterán
Azure DevOps Pipeline vs Azure DevTest Lab custom VM-ek indítása leállítása pipelineból
Azure DevOpsban van egy projektem, ehhez tartozik egy Build Pipeline (YAML-formátumban). A build pipeline több stage-ből áll. Az első stage-ban egy standard Microsoft VM agent buildeli a kódot stb.
A következő stage már custom agenteket használ (funkcionális tesztek), ezeket a custom agenteket Azure DevTest Lab-ben hostolom és a DevOps-ban egy "Environment"-be vannak beregisztrálva. Ezeket a DevTest Lab-ben futó custom agenteket aztán a pipeleneból Deployment jobokkal managelem, osztok rájuk taskokat. (ez így szépen működik)
A kérdés az az, hogy hogyan tudnám a VM-eket a pipelineból powershell taskkal indítani leállítani.? Most nem nagyon érek rá kísérletezgetni, de tök jó lenne, ha ez is menne.
Gondolom maga az indítás leállítás valami Get-AzVM -Name *akármi* | Start-AzVM szerű dolog lesz, de az autoritzáció része nekem nem tiszta. Szóval csinált már valaki ilyet?
-
Keem1
veterán
válasz
Jokerpoker #9212 üzenetére
Valóban egyszerűbb a CSV, de ha nem riadsz vissza a kihívásoktól, akkor egy HTML parsert javasolnék, ahol xpath alapján kéred le az adatot. Akár B opciónak, házi feladatnak a CSV feldolgozás mellett ezt is kipróbálhatod, én így gyűjtöm a koronavírus infót a hivatalos oldalról már 2 és fél hónapja.
Plusz parse-olok időjárási oldalakat is, már 4 évre visszamenő, óránkénti bontású saját statisztikám van. Az évek során többször variáltam az adatforrásokat, mivel voltak olyanok, ahonnan kitiltottak a gyakori lekérés miatt.
Én a HtmlAgilityPack nevűt használom, ez még a HTML lekérést is megoldja, https oldalról is, ráadásul én egy listából variálom a useragenteket (van köztük valós Chrome, Safari, IE, Firefox is), hogy ne tűnjön robotnak a program és ne tiltsák ki az oldalakról
-
kispx
addikt
válasz
Jokerpoker #9212 üzenetére
Egyszerűbb ha a CSV-t töltöd le.
-
Jokerpoker
csendes újonc
Sziasztok!
Írtam egy programot, ami lekéri a Szerencsejáték Zrt weboldalnak a forráskódját.
Az lenne a kérdésem, hogy hogyan tudom ebből a hosszú forráskódból kiszedni azt az öt számot, amik a múltheti nyerőszámok? -
martonx
veterán
-
friky81
csendes tag
válasz
sztanozs #9208 üzenetére
a lényeg hogy én nem feltétlenül szöveget akarok kinyerrni hanem maga a képernyöre vetitett képből akarok másolni
Elméletileg a kivetitett kép a memoriából kerül a képernyöre onnan kéne kiolvasnom de úgy hogy ne befolyásolja a kivetitést nem akarom felülírni a memoriarészt csak olvasni
Kezdetne elég lenne némi ifo milyen formában van a kép a memoriában esetleg memoriacim ... valami fügvény esetleg ha van rá .... -
friky81
csendes tag
Sziasztok
Volna egy kérésem
Egy olyan kódot szeretnék írni ami a windows alatt tetszőleges darabot kimásol az asztal képernyőről bármi is legyen a képernyőn azt elmenti egy kép formátumba vagy hasonló
Lényegében a szövegfelolvasó progik is valahogyan hozzáférnek a képernyő képéhez.
Nekem is valami ilyesmi kéne
Valaki tudna segíte egy rövid koddal ? -
AnyamBorogas
csendes tag
hello!
Szeretnék egy iterációt végigcsinálni x darab textBox-on, úgy, hogy pl textBox1-ben van egy string, az eltűnik, és megjelenik textBox2-ben majd ez így tovább x-ig, közte mondjuk 1s sleep-el. Illetve ugyan ez visszafelé pl buttonClick-re.
Erre valaki tud help-et, sajna Google nem segített sokat. -
-
bandi0000
nagyúr
Lenne egy kis gondom EF Core-ban
Van 2 tábla, 1-1 kapcsolat van köztük, ApplicationUsers és ForgotPasswords
ForgotPasswords táblába vettem fel tulajdonságként az ApplicationUser-t
Elmentek egy rekordot ForgotPassword táblába, látszik is az adatbázisba az ApplicationUser kulcsa, viszont ha lekérdezném a usert-t, akkor null-t kapok
var user = forgotPasswordRepository.getToken(model.ForgotPasswordToken).ApplicationUser;
Olvasgattam és olyasmit írnak, hogy bekéne Include-al dobni az ApplicationUser táblát is, de nincs Include-om, vagy legalább is nem ajánlja fel
Ezt hogy lehetne megoldani?
-
alratar
addikt
Sziasztok.
Ismerkedem az MVVM-mel.Létrehoztam egy gombot, aminek annyi lenne a feladata, hogy egy
TextBlock
tartalmát törölje.
Addig eljutottam, hogy aCommand
kell aClick
event helyett, de azICommad
interfész implementálásánál elvérzek.
Sokan ajánlottá a Caliburn Micro-t, de ha nem muszáj nem használnék külső cuccokat.Tudnátok segíteni nekem?
Ú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!
- Ohh Lenovo ThinkPad P15 G2 Tervező Vágó Laptop -75% 15,6" i5-11500H 32/1TB RTX A2000 4GB /1 Millió/
- UHH! HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -40% i7-1165G7 16/512 Iris Xe FHD EU-HUN
- IBM PS/1 2168-552 486SX-25
- ASUS ROG Strix RTX 2080 Ti OC 11GB
- Acer Swift 3 (SF314 54) i5 / 8GB RAM / SSD / FullHD / kiváló állapotban!
- ÁRGARANCIA! Épített KomPhone i5 14400F 32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- Xiaomi 11T Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Sony PlayStation4 PRO 1TB fekete konzol extra játékokkal garanciával hibátlan működéssel
- Azonnali kézbesítés az év bármely pillanatában
- DDR3 BAZÁR! 8GB 16GB 1333MHz 1600MHz 2400MHz DDR3 memória garanciával hibátlan működéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest