小编Bla*_*Box的帖子

JavaScript循环变量范围

关于JavaScript变量范围的快速问题.

为什么alert()函数打印值i而不是返回undefined

$(document).ready(function () {
    for(var i = 0; i < 10; i += 1){
    }

     alert("What is 'i'? " + i);
});
Run Code Online (Sandbox Code Playgroud)

我对JS很新,在几乎所有其他语言中我都涉及过,for循环范围内的声明将包含该循环的值,但在这种情况下不是,为什么?

What is 'i'? 10'打印.

javascript variables scope for-loop

57
推荐指数
5
解决办法
6万
查看次数

如何将java中的文件选择器限制为特定文件

private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {

    DBmanager db = new DBmanager();
    if (!db.getCurrentUser().equals("Admin")) {
        JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        fileChooser.setAcceptAllFileFilterUsed(false);
        int returnVal = fileChooser.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();

            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    } else if (db.getCurrentUser().equals("Admin")) {
        JFileChooser fileChooser …
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

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

C#Concurrency - 长期运行任务的首选方法

当需要在整个应用程序生命周期中运行I/O侦听器时,在4.5框架上运行C#5.0时,首选哪种并发模型?

我已经确定了生产者 - 消费者模式最适合处理我收到的东西,但基础设施应该支持它的想法?

请问一个简单的Thread thread = new Thread(ThreadStart(method))建议吗?或者可能是首选TaskAsync/Await型号?

这是一个快速的问题,但由于我在设计初期,我宁愿确保基础强大.我对其他语言的直觉反应是,在后台运行一个简单的线程是最好的,但是C#中过多的并行框架让我偏离了正轨.

如果有任何相关性,我的应用程序中的轮询时间将由I/O读取超时处理.

更新:

I/OI指的是FTDI设备,其中字节可以随时由设备推送到PC,具体取决于板载控制器的状态.因此,我总是需要准备好拾取数据并进行处理.我正在使用的API基于FTDI供应商提供的D2XX DLL.

c# multithreading asynchronous async-await .net-4.5

8
推荐指数
2
解决办法
798
查看次数

使用CLI将C#double数组传递给C++函数

对,需要听起来很简单,但事实证明这是一个真正的痛苦.

我在C#中有一些GUI代码(注意我以前从未使用过C#但熟悉语法)并且我有使用CLI与之交互的C++代码.

在C#中,我想创建一个双精度数组,并将其发送到我的C++代码.我使用下面的代码作为传递数组的方法,这是孤立的.

所以从C#im传入double []数组到该函数.

public ref class KernelWrapper
{
public: 
    static void ImageNoiseFilter(System::IntPtr imageData, int imageWidth, int imageHeight, array<double>^ values); 
Run Code Online (Sandbox Code Playgroud)

我应该使用什么参数类型从C++端检索此数组?

我试过了:

 MyFunction(double values[]){}
 MyFunction(double* values){}
 MyFunction(array<double>^ values){} 
Run Code Online (Sandbox Code Playgroud)

但没有编译,通常使用"数组不是模板"的消息,最后一个,和

Error   1   error C2664: 'RunImageNoiseFilterKernel' : cannot convert parameter 4 from 'cli::array<Type> ^' to 'double *'
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一目标的任何提示将不胜感激.


为了便于阅读,我在这里用代码更新

.cpp文件:

void Bangor::KernelWrapper::ImageNoiseFilter(System::IntPtr imageData, int imageWidth,    int imageHeight, pin_ptr<double> pval){
    RunImageNoiseFilterKernel((Format24bppRgb*)((int)imageData), imageWidth, imageHeight); //If parameter would work, 4th argument would also be passed into this.
} …
Run Code Online (Sandbox Code Playgroud)

c# c++ arrays pointers c++-cli

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

ReactiveUI - 查看定位器性能

在我WPF使用 的应用程序中ReactiveUI,我注意到性能不佳的区域。

我有一个包含许多其他轻量级视图模型的视图模型(想想 30ish)。这些嵌套的视图模型很简单,通常每个都代表一个按钮。它们都显示在用户控件中,在ItemsControl使用 ReactiveUI 的OneWayBind. 这意味着每个项目都使用ViewModelViewHost显示。

所以,问题

在我强大的台式电脑上,当我导航到这个视图模型时,在按下“转到视图模型”按钮和视图改变之间有一个明显的延迟,大约 0.5 秒。当我在 Power-PC 上运行相同的软件时,延迟接近 4 秒。从用户体验的角度来看,这是一个非常大的问题。

我学到了什么

我尝试分析和调试我的代码很长一段时间,并没有发现问题区域。Zilch(注意:在 VS 中使用 JustMyCode 所以 ReactiveUI 没有出现)。但是,我确实找到了解决问题的方法。我没有绑定到ItemsControl.ItemSourcewith OneWayBind,而是在 XAML 中这样做了,例如:ItemSource={Binding MyViewModels}DataTemplate手动设置。这导致更快的过渡。

当您使用OneWayBind与绑定时ItemsControl,将ViewModelViewHost自动为您创建一个,并且ViewLocator用于为您的视图模型查找视图。我假设由于某种原因这很慢。

有没有人知道如何在不必为 ItemsControl 手动定义大量数据模板的情况下解决这种性能问题?如果我有视图模型的视图模型的视图模型,那么事情往往会很快变得丑陋。从我过去使用 的经验Caliburn.Micro来看,视图位置约定非常快,所以我也想知道我是否没有完全ReactiveUI正确使用,并且有一种更快的替代方法。

谢谢你。

TLDR;

ViewModelViewHost作为DataTemplate用于〜30视图模式使视图最初加载时会很慢,使UI看起来好像已经崩溃。有什么办法可以避免这种情况吗?

c# wpf performance reactiveui

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

关闭 OpenFileDialog 会导致应用程序挂起 3-4 秒

在我WPF使用Caliburn.MicroMahApps.Metro框架的应用程序中,我打开OpenFileDialogSystem.Windows.Forms命名空间中的实例。打开和关闭此对话框后,我的应用程序的其余部分挂起大约 3 到 4 秒。使用Microsoft.Win32命名空间时也是如此。

我自己做了一些研究,并提出了一些抱怨同一问题的帖子,他们找到的解决方案有两个:

  1. 快速修复:将ShowHelp属性设置为true
  2. 正确修复:确保它在Single Threaded Apartment模式下运行。

ShowHelp修复程序通过使用非 vista 样式对话框对我有用,但从UXWindows Vista 和更新版本的角度来看,它看起来不正确。对我来说另一件事是确保它处于STA模式下。

WPFSTA默认情况下使用,但我尝试编写自己的主要方法并明确说明[STA]但没有运气。我将以下代码段添加到我的代码中,但输出为State: STA,表明应该没有问题。

Console.WriteLine("State: {0}", System.Threading.Thread.CurrentThread.GetApartmentState());
var dialog = new OpenFileDialog
Run Code Online (Sandbox Code Playgroud)

我也试过OpenFileDialog在一个新STA线程上启动它,虽然它启动并且没有挂起我的应用程序,但它也不再是模态的。我也尝试加入新线程,但关闭后它仍然挂起。

是否存在已知的潜在问题,OpenFileDialog如果有,是否有启动 FileDialogs 的替代方法可以避免这种挂起?

来源ShowHelpSTA评论:

c# wpf multithreading openfiledialog mahapps.metro

5
推荐指数
0
解决办法
471
查看次数

WPF-增加现有样式的滚动条宽度

我目前正在使用MahApps.Metro设置WPF控件的样式。当我向组件中添加ScrollViewer时,使用的是MahApps.Metro样式,但是虽然我喜欢该样式,但滚动条的宽度(垂直)不适合我的需要。有人可以建议一种增加现有样式宽度的方法吗(从库中获取,尽管源可以在github上找到)?

我试过使用:

<Style TargetType="ScrollBar"><Setter Property="Width" Value="50"/></Style>
Run Code Online (Sandbox Code Playgroud)

但是它将MahApps.Metro样式还原为WPF默认值,但滚动条较粗。在此之后,我尝试使用:

<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
Run Code Online (Sandbox Code Playgroud)

但它似乎没有视觉效果。

c# wpf xaml mahapps.metro

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

在QTCreator GUI中播放视频

我目前正在使用QTCreator版本4.7.4来编写一个GUI应用程序,它在应用程序中播放AVI文件.

我这样做的方法是将每个帧设置为QLabel内的QPixmap.

         video.load("lk",video.EXT_AVI);
         if(video.hasLoaded()){
              while(!video.hasFinished()){
                  frame = video.getCurrentFrame();
                  cv::cvtColor(frame, frame, CV_BGR2RGB);
                  QImage myImage = QImage( (const unsigned char*) (frame.data),frame.cols, frame.rows, frame.step1(),QImage::Format_RGB888 );
                  ui->displayLabel->setPixmap((QPixmap::fromImage(myImage)));
                  video.nextFrame();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用opencv API中的VideoCapture类来获取每个帧时,帧最初被检索为CV :: MAT对象,因此我将它们转换为QImages.

如果我在一个简单的控制台程序中使用opencv API中的CV :: imshow()函数,我能够正常播放文件,但是当我在循环中运行上面的代码时,我的程序基本上崩溃,直到最后一帧,然后它将返回到显示最后一帧的稳定状态.

我对C++很陌生,但对Java有很好的经验,所以我对这个问题的初步猜测是一切都在事件线程上完成,因此占用了所有资源,导致应用程序停止响应而.

任何帮助将不胜感激.

注意:视频是我自己的类,它封装了opencv API中的VideoCapture类.

c++ user-interface opencv nokia qt-creator

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

ReactiveUI - 视图无法正确呈现(或完整呈现)

我正在开始一个新项目,使用ReactiveUIMahApps.Metro.我遇到的第一个障碍是一个没有完整显示的观点问题.我有一个Window,并且Window我有一个ViewModelViewHost来自RxUI库.它是嵌套视图模型的简单容器.ActiveItem绑定已正确绑定到用户控件的视图模型,并且Button用户控件在屏幕上可见.

我希望看到的是Window深灰色背景和中间的按钮.我看到的是Window它的默认背景和Button中间的.这个不对.如果我删除按钮,我看不到任何内容Window,只有默认背景.

它似乎ViewModelViewHost只显示了UserControl的实际内容,而忽略了不被认为是真正的Control,例如网格等.

有没有人遇到过这种行为?

<mah:MetroWindow x:Class="...MainWindow"
                 xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:rx="clr-namespace:ReactiveUI;assembly=ReactiveUI"
                 WindowStartupLocation="CenterScreen"
                 ShowTitleBar="False"
                 ShowCloseButton="False"
                 ShowMaxRestoreButton="False"
                 ShowMinButton="False"
                 Height="768"
                 Width="1024">
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <rx:ViewModelViewHost ViewModel="{Binding ActiveItem}" />
    </Grid>
</mah:MetroWindow>


<UserControl x:Class="...NestedView"
             Name="TheUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             TextOptions.TextHintingMode="Auto"
             TextOptions.TextRenderingMode="Auto"
             d:DesignHeight="768" d:DesignWidth="1024">

    <Grid Background="DarkGray">
        <Button Width="200" Height="100" />
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

c# wpf reactiveui mahapps.metro

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