小编phi*_*131的帖子

为什么System.Timers.Timer不更新非繁忙的UI?

我一直在寻找原因,但关于stackoverflow上的每一个主题,我都能找到一个忙碌的UI作为原因.我有非常基本的代码,仅用于测试,它根本不会更新UI,即使我确信它不能忙于做其他事情:

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

    static double t = 0;
    static double dt = 0.1;

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Timer timer = new Timer(5000);
        timer.Enabled = true;
        timer.Elapsed += new ElapsedEventHandler(Update);
        timer.Start();
    }

    void Update(object sender, ElapsedEventArgs e)
    {
        t = t + dt;
        testBlock1.Text = (t).ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我调试了它并为textBlock1.Text更新设置了一个断点,它确实每隔5秒就会中断,但UI永远不会更新.从代码中可以看出,当我将鼠标移到Button我用来启动计时器时,按钮会显示其典型的"鼠标悬停按钮"动画.为什么会这样,但不是文本更新?

如果有人能引导我到stackoverflow的一个好主题,请这样做,我将在这里删除我的问题,但我找不到任何主题解释为什么这种方法不更新UI即使UI不忙做任何其他.

c# wpf user-interface timer

4
推荐指数
2
解决办法
1846
查看次数

WPF滑块ValueChanged-Event的频率

在我的应用程序中,我使用两个滑杆来控制某些图像的亮度和对比度,并且当两个滑杆中的任何一个更改其值属性时,每次必须逐像素完全重新计算图像。较小图像的重新计算完全可以完成,不会造成任何问题,但是,较大图像需要重新计算,并且与鼠标指针相比,滑块的移动略有延迟。我确实需要实时或多或少地重新计算图像,因此只需在DragCompleted或类似是不可接受的。

重新计算使用 ValueChanged滑块 -event。我认为,如果不尽快触发该事件,但至少要等待50毫秒再触发一次,此问题的一种好的解决方案是,但是滑块是否具有可以控制该事件的属性?

我想到的另一种解决方案是,在事件得到处理后,从开始时立即从滑块中删除该事件,然后在短时间内再次将其添加,但这本身可能会导致一些延迟,因此在这里也不是优选的。

我真的在任何地方都找不到关于该主题的任何内容,因此,如果有人有我可以使用的任何好的建议或指示,我将非常感激。

c# wpf events slider

4
推荐指数
1
解决办法
4761
查看次数

打开窗口(或对话框)以阻止主窗口而不停止进一步的指令

只需MainWindow单击按钮,我就可以进行一些可能需要几秒钟的计算.在那段时间我想展示一个小对话框(或单独的窗口),说"请等待......"在其中间MainWindow将完全阻止它,因此在关闭此对话框之前,用户无法执行任何操作.我尝试创建一个窗口并打开它,window.ShowDialog();但这当然不会继续说明......

有没有其他方法可行?

c# wpf dialog

3
推荐指数
1
解决办法
8233
查看次数

在C#中读取用C格式化的文件

我有一个二进制文件,用C语言编写,包含很长的数字流.首先它随后包含4次int(所以前16个字节是4个int)然后它包含双精度(我假设每8个字节一个新的双精度).

任何地方或其他任何地方都没有空格.现在我需要用C#读取数据,但到目前为止我试过的一切都没有用,有什么建议吗?

c c# file formatted

1
推荐指数
1
解决办法
530
查看次数

如果鼠标失去对对象的关注,为什么 MouseMove 事件不起作用?

我的程序中基本上有一个简单的问题,我只想确保一切正常。它应该在单击鼠标按钮时添加MouseEventHandler,然后与鼠标一起移动圆圈,直到事件处理程序被删除。我将代码简化为非常基础的代码:

XAML:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid Name="grid1" Background="White" MouseLeftButtonUp="grid_MouseUp">
        <Ellipse Height="50" HorizontalAlignment="Left" Margin="12,12,0,0" Name="ellipse1" Stroke="{x:Null}" VerticalAlignment="Top" Width="50" Fill="Black" MouseLeftButtonDown="ellipse1_MouseDown" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

C#:

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

    private static Point _oldPoint = new Point(), _newPoint = new Point();

    private void ellipse1_MouseDown(object sender, MouseButtonEventArgs e)
    {
        _oldPoint = e.GetPosition(grid1);
        grid1.MouseMove += new MouseEventHandler(grid_MouseMove);
    }

    private void grid_MouseUp(object sender, MouseButtonEventArgs e)
    {
        grid1.MouseMove -= new MouseEventHandler(grid_MouseMove);
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# wpf mouse event-handling

1
推荐指数
1
解决办法
3661
查看次数

IDisposable究竟需要什么?

可能重复:
正确使用IDisposable接口

我试图通过书籍,互联网和stackoverflow找到我的问题的实际答案,但到目前为止没有任何帮助我,所以希望我可以说明我的问题足够有意义.

一般来说,我总是找到与如何释放内存相同的基本用法,即约.如下,我确实理解代码本身:

public class MyClass : IDisposable
{
    bool disposed = false;
    public void Dispose()
    {
        if (!disposed)
        {
        Dispose(true);
        GC.SuppressFinalize(this);
        disposed = true;
        }
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
        //free managed ressources
        }
    // free other ressources
    }

    ~MyClass()
    {
        Dispose(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

它完全理解方法的工作方式.但现在我的问题是:为什么我们需要基类IDisposable?在此代码示例,我们定义了一个名为方法Dispose().当我到处读到该方法是IDisposable的一部分时,我们刚刚定义了该方法MyClass,如果我们不实现基类IDisposable或者我错误的假设,这段代码仍然有用吗?

我对C#并不是全新的,但我仍然需要学习很多东西,所以希望有人可以带领我朝着正确的方向前进.我检查了另一篇同样问题的帖子,但找不到它,所以如果它确实存在且它确实回答了我的问题,请带我到那里,我将删除这篇文章.

c# memory idisposable base-class

1
推荐指数
1
解决办法
1427
查看次数

直接类型转换派生到基类来调用重载函数

在我的代码中,我自然而然地,在没有考虑它的情况下,首先将派生结构类型转换为基础结构以调用重载函数,然后意识到它可能在某些情况下导致问题(尽管我老实说不知道是否哪个).

我的代码如下:

struct Base
{
    //some variables
}

struct Derived : Base
{
    //some more variables
}

bool func(const Base &base1, const Base &base2)
{
    //do some stuff and return true or false
}
bool func(const Base &base, const Derived &derived)
{
    if(func(base, (Base)derived))
        return true;
    else
        //do some more stuff and return true or false
}
Run Code Online (Sandbox Code Playgroud)

代码编译,功能按预期工作.

我在SO和其他地方发现了很多关于向上和向下转换的问题,但它们都涉及使用指针而不是直接类型转换为基类.在这个链接中,人直接将类型转换为派生类而不是基类.我发现没有任何问题可以直接解决这个问题,但我可能根本就不知道该寻找什么,所以在这种情况下请指出正确的方向!

我假设(并在线阅读)类型转换涉及创建副本,因此(Base)derived不会简单地返回引用derived,而是使用第一个函数.我可能遇到任何其他缺点或问题吗?

c++ inheritance casting overloading

1
推荐指数
1
解决办法
2079
查看次数

新手Python练习 - 找到点之间的距离.

好吧,在我的第一个编程课上.除了这一个,我做了所有的家庭作业.我无法完全理解要求我做的事情(与我读过的文字有关),所以我想我会问这里.

问:使用二维坐标系表示半径为10的飞镖板和挂在其上的墙,其中板的中心位于坐标(0,0)处.变量x和y存储飞镖命中的x和y坐标.使用变量x和y编写表达式,如果飞镖击中(位于)飞镖内,则计算结果为true,并计算这些飞镖坐标的表达式:

(0,0)(10,10)(6,-6)( - 7,8)

老实说,我不知道从哪里开始.救命?提示?

python

-7
推荐指数
1
解决办法
1717
查看次数