Kezdőoldal » Számítástechnika » Programozás » Xaml+c#, hogy csináljam meg a...

Xaml+c#, hogy csináljam meg a progress bar-t úgy, hogy amint betöltött, kezdje előlről?

Figyelt kérdés

tehát van 5 progress bar-om egymás alatt, mind különböző időtartammal.Ha lejárnak adnak egy bizonyos összeget.Viszont ez után(miután betöltött a progressbar és megadta az összeget utána nem indul újra) hogy tudom megcsinálni, hogy újra induljon minden egyes értékadás után?


tehát 1 progressbar-ra lebontva: 5másodpercenként ad 200ft-t és hogy látszódjon mennyi van hátra, szemléletesebb egy progressbaron megcsinálni, de sajnos nem tudom, hogy rakjam bele végtelen ciklusba, hogy ne álljon meg soha, mivel az értékadás sem áll meg soha.Ez egy játék szándékosan végtelen a ciklus.


2020. jan. 31. 22:39
 1/6 anonim ***** válasza:
while (true)
2020. jan. 31. 22:53
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Arra ezt írja ki:


System.InvalidOperationException: 'Ez a BackgroundWorker folyamat jelenleg foglalt, és nem képest több feladat egyidejű futtatására.'


private void MakeMoney(object sender, RoutedEventArgs e){


while (true)

{

DataContext = this;


_bgWorker.DoWork += (s, f) =>

{

for (int i = 0; i <= 5; i++)

{

Thread.Sleep(1000);

WorkerState = i;

}

};


_bgWorker.RunWorkerAsync();

}

}

2020. jan. 31. 23:05
 3/6 anonim ***** válasza:

  DispatcherTimer Timer { get; set; }

        public MainWindow()

        {

            InitializeComponent();

            Timer = new DispatcherTimer();

            Timer.Interval = new TimeSpan(0, 0, 5);

            Timer.Start();

            progressBar.Maximum = 1000;

            Timer.Tick += Timer_Tick;

        }


        private void Timer_Tick(object sender, EventArgs e)

        {

            if (progressBar.Value < progressBar.Maximum)

            { 

                progressBar.Value += 200;

            }

            else progressBar.Value = 0;


            labelOsszeg.Content = $"{progressBar.Value} Ft";

        }

2020. febr. 1. 00:44
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Kicsit offtopic, de köszi az ötletet :) Kíváncsi voltam, hogy a Microsoft.Extensions.DependencyInjection DI rendszert hogyan lehet összepárosítani a WPF-el és egy komplexebb üzleti logikai réteggel úgy, hogy az egész hóbelebanc unit tesztelhető is legyen.

[link]


Igaz, a progressbar-ra nem jutott időm, de számodra két dolog érdekes ebből.

1) Maga a nyomógomb ICommand-ja, ami beindítja a háttérben futó folyamatot egy fire'n'forget hívással:

[link] /blob/master/WpfApp3/Commands/StartAddingMoneyCommand.cs


2) Maga a scheduler, ami ismételgetve 5 másodpercenként hozzáad egy általam megadott összegű pénzösszeget:

[link] /blob/master/WpfApp3/BusinessLogic/ScheduledMoneyAddingService.cs

Figyeld meg, hogy a Start metódusban van egy ConfigureAwait(false). Ez azért van, mert nem akarok visszaszinkronizálni az eredeti SynchronizationContext-be (mivel ez csak egy fire'n'forget hívás).


Kicsit túlbonyolított példának érezheted (enterspájz app), de csak azért, mert

- tettem bele data management réteget, szimulálva azt, hogy egy tényleges adatbázist is alá lehet rakni, anélkül, hogy a VirtualMoneyService-be bele kellene nyúlni

- az üzleti logikai réteg notification service-ét (IMoneyAddedNotificationService.cs) össze kell egy adapterrel (MoneyAddedNotificationToEventAdapter.cs) párosítani az INotifyPropertyChanged interfésszel, hogy data binding révén a UI frissüljön

2020. febr. 1. 14:51
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

Még több offtopic:

Most látom, hogy van egy olyan, hogy Dapplo: [link]

Ez arra jó, hogy egy .NET Generic Host-ot köré tudsz húzni a WPF appodnak. Így az IHostedService-t könnyebben használhatod arra, hogy háttérben futó folyamatokat indíthass.

2020. febr. 1. 14:54
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
köszönöm szépen! :)
2020. febr. 1. 17:54

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!