Another approach would be to create a new popup instance before starting the readProduct call and to use the AsyncToken that function retruns and save your Popup instance there. Then in the result handler you can get that instance from the ResultEvent.token object and close only that instance.
protected function button1_clickHandler(event:MouseEvent):void
{
var popup:IFlexDisplayObject = PopUpManager.createPopup(this, MyPopupComonent, true);
//i want to show popwindow for slow process
var token:AsyncToken = amf.readProduct();
token.popup = popup;
}
protected function method1_resultHandler(event:ResultEvent):void
{
var popup:IFlexDisplayObject = IFlexDisplayObject(event.token.popup);
PopUpManager.removePopup(popup);
//Here the data is retrieved successfully then the popup is removed
myArraydata.removeAll();
myArraydata = new ArrayCollection(ArrayUtil.toArray(event.result));
}