关于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'
打印.
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) 当需要在整个应用程序生命周期中运行I/O侦听器时,在4.5框架上运行C#5.0时,首选哪种并发模型?
我已经确定了生产者 - 消费者模式最适合处理我收到的东西,但基础设施应该支持它的想法?
请问一个简单的Thread thread = new Thread(ThreadStart(method))
建议吗?或者可能是首选Task
或Async/Await
型号?
这是一个快速的问题,但由于我在设计初期,我宁愿确保基础强大.我对其他语言的直觉反应是,在后台运行一个简单的线程是最好的,但是C#中过多的并行框架让我偏离了正轨.
如果有任何相关性,我的应用程序中的轮询时间将由I/O读取超时处理.
I/OI指的是FTDI设备,其中字节可以随时由设备推送到PC,具体取决于板载控制器的状态.因此,我总是需要准备好拾取数据并进行处理.我正在使用的API基于FTDI供应商提供的D2XX DLL.
我在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)
关于如何实现这一目标的任何提示将不胜感激.
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) 在我WPF
使用 的应用程序中ReactiveUI
,我注意到性能不佳的区域。
我有一个包含许多其他轻量级视图模型的视图模型(想想 30ish)。这些嵌套的视图模型很简单,通常每个都代表一个按钮。它们都显示在用户控件中,在ItemsControl
使用 ReactiveUI 的OneWayBind
. 这意味着每个项目都使用ViewModelViewHost显示。
在我强大的台式电脑上,当我导航到这个视图模型时,在按下“转到视图模型”按钮和视图改变之间有一个明显的延迟,大约 0.5 秒。当我在 Power-PC 上运行相同的软件时,延迟接近 4 秒。从用户体验的角度来看,这是一个非常大的问题。
我尝试分析和调试我的代码很长一段时间,并没有发现问题区域。Zilch(注意:在 VS 中使用 JustMyCode 所以 ReactiveUI 没有出现)。但是,我确实找到了解决问题的方法。我没有绑定到ItemsControl.ItemSource
with OneWayBind
,而是在 XAML 中这样做了,例如:ItemSource={Binding MyViewModels}
并DataTemplate
手动设置。这导致更快的过渡。
当您使用OneWayBind
与绑定时ItemsControl
,将ViewModelViewHost
自动为您创建一个,并且ViewLocator
用于为您的视图模型查找视图。我假设由于某种原因这很慢。
有没有人知道如何在不必为 ItemsControl 手动定义大量数据模板的情况下解决这种性能问题?如果我有视图模型的视图模型的视图模型,那么事情往往会很快变得丑陋。从我过去使用 的经验Caliburn.Micro
来看,视图位置约定非常快,所以我也想知道我是否没有完全ReactiveUI
正确使用,并且有一种更快的替代方法。
谢谢你。
ViewModelViewHost
作为DataTemplate
用于〜30视图模式使视图最初加载时会很慢,使UI看起来好像已经崩溃。有什么办法可以避免这种情况吗?
在我WPF
使用Caliburn.Micro
和MahApps.Metro
框架的应用程序中,我打开OpenFileDialog
了System.Windows.Forms
命名空间中的实例。打开和关闭此对话框后,我的应用程序的其余部分挂起大约 3 到 4 秒。使用Microsoft.Win32
命名空间时也是如此。
我自己做了一些研究,并提出了一些抱怨同一问题的帖子,他们找到的解决方案有两个:
ShowHelp
属性设置为true
Single Threaded Apartment
模式下运行。该ShowHelp
修复程序通过使用非 vista 样式对话框对我有用,但从UX
Windows Vista 和更新版本的角度来看,它看起来不正确。对我来说另一件事是确保它处于STA
模式下。
WPF
STA
默认情况下使用,但我尝试编写自己的主要方法并明确说明[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 的替代方法可以避免这种挂起?
来源ShowHelp
和STA
评论:
我目前正在使用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)
但它似乎没有视觉效果。
我目前正在使用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类.
我正在开始一个新项目,使用ReactiveUI
和MahApps.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# ×6
wpf ×4
c++ ×2
reactiveui ×2
.net-4.5 ×1
arrays ×1
async-await ×1
asynchronous ×1
c++-cli ×1
for-loop ×1
java ×1
javascript ×1
jfilechooser ×1
nokia ×1
opencv ×1
performance ×1
pointers ×1
qt-creator ×1
scope ×1
swing ×1
variables ×1
xaml ×1