Gnrtuga Posted February 20, 2017 at 11:47 AM Report Share #602633 Posted February 20, 2017 at 11:47 AM Olá pessoal, estou aqui com um problema e não estou a ver a solução. Tenho uma aplicação em que cada vez que o utilizador clica no botão para abrir novo ficheiro vê um vídeo e só depois é que aparece a caixa de diálogo para escolher o ficheiro a abrir. Quando usas a primeira vez, funciona bem, mas se fores abrir outro ficheiro já te aparecem duas caixas de diálogo, se abrires um terceiro ficheiro aparecem três e por ai fora... É claro que eu só quero uma caixa de diálogo. Este é o código que tenho, alguma sugestão? private async void AbreButton_Click(object sender, RoutedEventArgs e) { try { await sdkInstance.PlayAdAsync(new AdConfig { Incentivized = true, SoundEnabled = false }); } catch { } TempoPublicidade.Interval = TimeSpan.FromSeconds(20); TempoPublicidade.Tick += DepoisPublicidade; TempoPublicidade.Start(); } private async void DepoisPublicidade(object sender, object e) { TempoPublicidade.Stop(); try { //usar o file picker para escolher os ficheiros FileOpenPicker MediaContent = new FileOpenPicker(); MediaContent.ViewMode = PickerViewMode.List; MediaContent.SuggestedStartLocation = PickerLocationId.ComputerFolder; MediaContent.FileTypeFilter.Add(".wav"); MediaContent.FileTypeFilter.Add(".wma"); MediaContent.FileTypeFilter.Add(".mp3"); StorageFile openmedia = await MediaContent.PickSingleFileAsync(); MyPlayer.AutoPlay = true; MyPlayer.SetPlaybackSource(MediaSource.CreateFromStorageFile(openmedia)); MyPlayer.Play(); TempoDecorrido.Visibility = Visibility; //Cria um timer, DispatcherTimer timer = new DispatcherTimer(); //escolhe o tempo em que é executado timer.Interval = TimeSpan.FromSeconds(1); //Activa um EventHandler timer.Tick += TempoCorre; timer.Tick += MudaBarra; // Inicia o Timer timer.Start(); //nova forma de dar Focus nas Windows Apps TextoBox.Focus(FocusState.Programmatic); } catch (Exception) { } } Obrigado desde já pela ajuda. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :) Link to comment Share on other sites More sharing options...
Solution ribeiro55 Posted February 20, 2017 at 11:57 AM Solution Report Share #602634 Posted February 20, 2017 at 11:57 AM Olá Gnrtuga. A linha TempoPublicidade.Tick += DepoisPublicidade; Só pode ser executada uma vez, pois sempre que for executada está a registar um novo handler. Corre uma vez, regista uma. Corre outra vez, regista outra, já abre 2. Corre outra vez, regista outra, já abre 3, e por aí fora. Aí dentro só deveria estar: TempoPublicidade.Start(); A inicialização do timer e o registo do handler pertencem à inicialização OU deves re-instanciar o timer. Aconselho-te a meter: TempoPublicidade.Interval = TimeSpan.FromSeconds(20); TempoPublicidade.Tick += DepoisPublicidade; No formload ou algo do género. Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips" Link to comment Share on other sites More sharing options...
Gnrtuga Posted February 20, 2017 at 07:54 PM Author Report Share #602648 Posted February 20, 2017 at 07:54 PM ribeiro55, obrigado pela rápida resposta. Assim que sair do trabalho vou experimentar. Obrigado pela ajuda. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :) Link to comment Share on other sites More sharing options...
Gnrtuga Posted February 21, 2017 at 03:25 PM Author Report Share #602685 Posted February 21, 2017 at 03:25 PM ribeiro22, era mesmo isso, meti o timer Interval e o Tick dentro da MainPage e faz exatamente o que era suposto, mais uma vez obrigado. P.S - Não sei meter o tópico como resolvido 🙂 Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now