none
Problemi applicazione wpf sviluppata in vb.net RRS feed

  • Domanda

  • Salve a tutti,

    Sto sviluppando una semplice app wpf con 2 progress bar che si avviano indipendentemente quando vengono cliccati i rispettivi bottoni, questo risultato l'ho già ottenuto usando c# ma ora sto riscontrando difficoltà a ricreare il tutto usando vb.net.

    Ho provato a convertire il codice c# a vb.net usando i convertitori online ma certe istruzioni non sono implementate e navigando un po' ho visto che per riuscire nella faccenda devo usare i backgroundworker, ma trovo tale metodo troppo macchinoso e peso.

    Allego il mio codice c# e xaml funzionante per far capire quello che vorrei ottenere

    XAML

    <Window x:Class="progressBars.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:progressBars"
            mc:Ignorable="d"
            Title="Main Form" Height="450" Width="800">
        <Grid>
            <ProgressBar Name="progress1" HorizontalAlignment="Left" Minimum="0" Maximum="100" />
            <ProgressBar Name="progress2" HorizontalAlignment="Left" Minimum="0" Maximum="100" />
            <Button x:Name="button_prog1" Content="Start progress 1" Click="Button_prog1_Click"/>
            <Button x:Name="button_prog2" Content="Start progress 2" Click="Button_prog2_Click"/>
            <Button x:Name="button_close" Content="Chiudi" Click="Button_close_Click"/>
        </Grid>
    </Window>

    /-----------------------------------------------------------------------------------------------------------/

    c#

    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }

            private async void Button_prog1_Click(object sender, RoutedEventArgs e)
            {
                button_prog1.IsEnabled = false;
                var progress = new Progress<int>(value => progress1.Value = value);
                await Task.Run(() =>
                {
                    for (int i = 0; i < 100; i++)
                    {
                        ((IProgress<int>)progress).Report(i);
                        Thread.Sleep(50);
                    }
                });
                button_prog1.IsEnabled = true;
                progress1.Value = 0;
            }

            private async void Button_prog2_Click(object sender, RoutedEventArgs e)
            {
                button_prog2.IsEnabled = false;
                var progress = new Progress<int>(value => progress2.Value = value);
                await Task.Run(() =>
                {
                    for (int i = 0; i < 100; i++)
                    {
                        ((IProgress<int>)progress).Report(i);
                        Thread.Sleep(50);
                    }
                });
                button_prog2.IsEnabled = true;
                progress2.Value = 0;
            }

            private void Button_close_Click(object sender, RoutedEventArgs e)
            {
                System.Windows.Application.Current.Shutdown();
            }
        }



    venerdì 4 gennaio 2019 07:55