سلام من یک دکمه دارم که دریافت اطلاعات از دیتابیس انجام میده که زمانی نسبتا زیادی طول میشکه این کار رو انجام بده. حالا در رویداد Click میخوام زمانی که کلیک کرد یک انیمیشن به اون نشون داد بشه.
و بعد از اتمام پردازش انیمیشن متوقف بشه.
برای اینکه انیمیشن من در زمان پردازش متوقف نشه چون تمرکز میره روی عملیات سنگین SQL انیمیشن هم متوقف میشه و بعد از اینکه کار گرفتن دیتا از SQL انجام شد.
انیمیشن آزاد میشه که حالا یا ادامه یا متوقف بشه.
برای این مشکل رفتم سراغ Thread اما برای برای هم چین چیزی درست کار نمیکنه.
شما برای اینکه بهتر بفهمید این کد xaml رو توی یک پروژه تست کنید :
دستورات xaml :
<Window.Resources>
<Storyboard x:Key="RotationBtn" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Command4">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="720"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Grid>
<Button x:Name="Command4" Content="Next Stage" Margin="599,406,304,84" Width="130" Height="37" FontSize="8" Click="Command4_Click" Background="#FFDDDDDD" BorderBrush="{x:Null}" RenderTransformOrigin="0.5,0.5">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Button.RenderTransform>
</Button>
</Grid>
اینم کد سی شارپش :
private void Command4_Click( object sender, RoutedEventArgs e )
{
// start the animation
{
Storyboard sb = (Storyboard)FindResource( "RotationBtn" );
Storyboard.SetTarget( sb, Command4 );
sb.Begin( );
}
// start the background database operation
var t = new Thread( ( ) =>
{
DoMyCodes();
// stop the animation and display the results
App.Current.Dispatcher.Invoke( ( ) =>
{
Storyboard sb = (Storyboard)FindResource( "RotationBtn" );
sb.Stop( );
// . . .
});
})
{
IsBackground = true
};
t.Start( );
}
private void DoMyCodes()
{
if ((string.IsNullOrEmpty(MyTextBox.Text))
{
MessageBox.Show("please enter valid parameter");
return;
}
else
{
var quer_RST = dbms.Database.SqlQuery<string>("with Letters as ( select letter from ( values ('a'), ('s'), ('d'), ('f'), ('g'), ('h'), ('j'), ('k') ) l(letter) ),Bitmasks as ( select cast(letter as varchar(max)) as letter, cast(power(2, row_number() over (order by letter) - 1) as int) as bitmask from Letters ),Permutations as( select letter as permutation, bitmask from Bitmasks union all select p.permutation + b.letter, p.bitmask ^ b.bitmask from Permutations p join Bitmasks b on p.bitmask ^ b.bitmask > p.bitmask)select permutation from Permutations where bitmask = power(2, (select count(*) from Letters)) - 1");
}
}
اما مسیله اینکه Thread درست کار نمیکنه و همچنان همون مشکل رو داره
و اما چیزی که باید باشه ولی نیست :
خواهش میکنم در این مورد کمک کنید
باتشکر
لینک پروژه بالا :
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
564
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
272
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4221
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4242
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3836
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
550
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3146
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3232
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
564
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|